Merge remote-tracking branch 'hub/dev' into feature/rating
This commit is contained in:
commit
7ccf3f8ce1
|
@ -2,7 +2,7 @@
|
||||||
"$schema": "https://biomejs.dev/schemas/1.5.3/schema.json",
|
"$schema": "https://biomejs.dev/schemas/1.5.3/schema.json",
|
||||||
"files": {
|
"files": {
|
||||||
"include": ["*.tsx", "*.ts", "*.js", "*.json"],
|
"include": ["*.tsx", "*.ts", "*.js", "*.json"],
|
||||||
"ignore": ["./dist", "./node_modules", ".husky", "docs", "gen"]
|
"ignore": ["./dist", "./node_modules", ".husky", "docs", "gen", "*.d.ts"]
|
||||||
},
|
},
|
||||||
"vcs": {
|
"vcs": {
|
||||||
"defaultBranch": "dev",
|
"defaultBranch": "dev",
|
||||||
|
@ -29,7 +29,7 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"linter": {
|
"linter": {
|
||||||
"ignore": ["*.scss", "*.md", ".DS_Store", "*.svg"],
|
"ignore": ["*.scss", "*.md", ".DS_Store", "*.svg", "*.d.ts"],
|
||||||
"enabled": true,
|
"enabled": true,
|
||||||
"rules": {
|
"rules": {
|
||||||
"all": true,
|
"all": true,
|
||||||
|
|
|
@ -16,13 +16,10 @@ import { ConditionalWrapper } from '../../_shared/ConditionalWrapper'
|
||||||
import { Icon } from '../../_shared/Icon'
|
import { Icon } from '../../_shared/Icon'
|
||||||
import { Userpic } from '../Userpic'
|
import { Userpic } from '../Userpic'
|
||||||
|
|
||||||
|
import { FollowedInfo } from '../../../pages/types'
|
||||||
import stylesButton from '../../_shared/Button/Button.module.scss'
|
import stylesButton from '../../_shared/Button/Button.module.scss'
|
||||||
import styles from './AuthorBadge.module.scss'
|
import styles from './AuthorBadge.module.scss'
|
||||||
|
|
||||||
type FollowedInfo = {
|
|
||||||
value?: boolean
|
|
||||||
loaded?: boolean
|
|
||||||
}
|
|
||||||
type Props = {
|
type Props = {
|
||||||
author: Author
|
author: Author
|
||||||
minimizeSubscribeButton?: boolean
|
minimizeSubscribeButton?: boolean
|
||||||
|
|
|
@ -308,7 +308,13 @@ export const AuthorCard = (props: Props) => {
|
||||||
author={subscription}
|
author={subscription}
|
||||||
/>
|
/>
|
||||||
) : (
|
) : (
|
||||||
<TopicBadge topic={subscription} />
|
<TopicBadge
|
||||||
|
isFollowed={{
|
||||||
|
loaded: Boolean(authorSubs()),
|
||||||
|
value: isOwnerSubscribed(subscription.id),
|
||||||
|
}}
|
||||||
|
topic={subscription}
|
||||||
|
/>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
</For>
|
</For>
|
||||||
|
|
|
@ -1,10 +1,13 @@
|
||||||
.TopicBadge {
|
.TopicBadge {
|
||||||
display: flex;
|
|
||||||
flex-direction: row;
|
|
||||||
align-items: flex-start;
|
|
||||||
margin-bottom: 2rem;
|
margin-bottom: 2rem;
|
||||||
gap: 1rem;
|
gap: 1rem;
|
||||||
|
|
||||||
|
.content {
|
||||||
|
align-items: flex-start;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: row;
|
||||||
|
margin-bottom: .8rem;
|
||||||
|
}
|
||||||
.basicInfo {
|
.basicInfo {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-flow: row nowrap;
|
flex-flow: row nowrap;
|
||||||
|
@ -78,3 +81,34 @@
|
||||||
width: 9em;
|
width: 9em;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.stats {
|
||||||
|
@include font-size(1.5rem);
|
||||||
|
|
||||||
|
color: var(--secondary-color);
|
||||||
|
display: flex;
|
||||||
|
margin: 0 0 1em;
|
||||||
|
|
||||||
|
@include media-breakpoint-down(md) {
|
||||||
|
flex-wrap: wrap;
|
||||||
|
}
|
||||||
|
|
||||||
|
@include media-breakpoint-down(sm) {
|
||||||
|
margin-top: 0.5em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.statsItem {
|
||||||
|
@include font-size(1.4rem);
|
||||||
|
|
||||||
|
margin-right: 1.6rem;
|
||||||
|
white-space: nowrap;
|
||||||
|
|
||||||
|
&:last-child {
|
||||||
|
margin-right: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.followers {
|
||||||
|
word-break: keep-all;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
import { clsx } from 'clsx'
|
import { clsx } from 'clsx'
|
||||||
import { Show, createEffect, createSignal } from 'solid-js'
|
import { Show, createEffect, createSignal, on } from 'solid-js'
|
||||||
|
|
||||||
import { useFollowing } from '../../../context/following'
|
import { useFollowing } from '../../../context/following'
|
||||||
import { useLocalize } from '../../../context/localize'
|
import { useLocalize } from '../../../context/localize'
|
||||||
|
@ -11,11 +11,14 @@ import { getImageUrl } from '../../../utils/getImageUrl'
|
||||||
import { Button } from '../../_shared/Button'
|
import { Button } from '../../_shared/Button'
|
||||||
import { CheckButton } from '../../_shared/CheckButton'
|
import { CheckButton } from '../../_shared/CheckButton'
|
||||||
|
|
||||||
|
import { FollowedInfo } from '../../../pages/types'
|
||||||
import styles from './TopicBadge.module.scss'
|
import styles from './TopicBadge.module.scss'
|
||||||
|
|
||||||
type Props = {
|
type Props = {
|
||||||
topic: Topic
|
topic: Topic
|
||||||
minimizeSubscribeButton?: boolean
|
minimizeSubscribeButton?: boolean
|
||||||
|
isFollowed?: FollowedInfo
|
||||||
|
showStat?: boolean
|
||||||
}
|
}
|
||||||
|
|
||||||
export const TopicBadge = (props: Props) => {
|
export const TopicBadge = (props: Props) => {
|
||||||
|
@ -24,12 +27,12 @@ export const TopicBadge = (props: Props) => {
|
||||||
const [isMobileView, setIsMobileView] = createSignal(false)
|
const [isMobileView, setIsMobileView] = createSignal(false)
|
||||||
const { requireAuthentication } = useSession()
|
const { requireAuthentication } = useSession()
|
||||||
const { setFollowing, loading: subLoading } = useFollowing()
|
const { setFollowing, loading: subLoading } = useFollowing()
|
||||||
const [followed, setFollowed] = createSignal()
|
const [isFollowed, setIsFollowed] = createSignal<boolean>()
|
||||||
|
|
||||||
const handleFollowClick = () => {
|
const handleFollowClick = () => {
|
||||||
const value = !followed()
|
const value = !isFollowed()
|
||||||
requireAuthentication(() => {
|
requireAuthentication(() => {
|
||||||
setFollowed(value)
|
setIsFollowed(value)
|
||||||
setFollowing(FollowingEntity.Topic, props.topic.slug, value)
|
setFollowing(FollowingEntity.Topic, props.topic.slug, value)
|
||||||
}, 'subscribe')
|
}, 'subscribe')
|
||||||
}
|
}
|
||||||
|
@ -38,11 +41,21 @@ export const TopicBadge = (props: Props) => {
|
||||||
setIsMobileView(!mediaMatches.sm)
|
setIsMobileView(!mediaMatches.sm)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
createEffect(
|
||||||
|
on(
|
||||||
|
() => props.isFollowed,
|
||||||
|
() => {
|
||||||
|
setIsFollowed(props.isFollowed.value)
|
||||||
|
},
|
||||||
|
),
|
||||||
|
)
|
||||||
|
|
||||||
const title = () =>
|
const title = () =>
|
||||||
lang() === 'en' ? capitalize(props.topic.slug.replaceAll('-', ' ')) : props.topic.title
|
lang() === 'en' ? capitalize(props.topic.slug.replaceAll('-', ' ')) : props.topic.title
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div class={styles.TopicBadge}>
|
<div class={styles.TopicBadge}>
|
||||||
|
<div class={styles.content}>
|
||||||
<div class={styles.basicInfo}>
|
<div class={styles.basicInfo}>
|
||||||
<a
|
<a
|
||||||
href={`/topic/${props.topic.slug}`}
|
href={`/topic/${props.topic.slug}`}
|
||||||
|
@ -75,11 +88,11 @@ export const TopicBadge = (props: Props) => {
|
||||||
<Show
|
<Show
|
||||||
when={!props.minimizeSubscribeButton}
|
when={!props.minimizeSubscribeButton}
|
||||||
fallback={
|
fallback={
|
||||||
<CheckButton text={t('Follow')} checked={Boolean(followed())} onClick={handleFollowClick} />
|
<CheckButton text={t('Follow')} checked={Boolean(isFollowed())} onClick={handleFollowClick} />
|
||||||
}
|
}
|
||||||
>
|
>
|
||||||
<Show
|
<Show
|
||||||
when={followed()}
|
when={isFollowed()}
|
||||||
fallback={
|
fallback={
|
||||||
<Button
|
<Button
|
||||||
variant="primary"
|
variant="primary"
|
||||||
|
@ -101,5 +114,13 @@ export const TopicBadge = (props: Props) => {
|
||||||
</Show>
|
</Show>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div class={styles.stats}>
|
||||||
|
<span class={styles.statsItem}>{t('shoutsWithCount', { count: props.topic?.stat?.shouts })}</span>
|
||||||
|
<span class={styles.statsItem}>{t('authorsWithCount', { count: props.topic?.stat?.authors })}</span>
|
||||||
|
<span class={styles.statsItem}>
|
||||||
|
{t('followersWithCount', { count: props.topic?.stat?.followers })}
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
|
@ -32,45 +32,6 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.stats {
|
|
||||||
@include font-size(1.7rem);
|
|
||||||
|
|
||||||
color: #9fa1a7;
|
|
||||||
display: flex;
|
|
||||||
margin: 0 0 1em;
|
|
||||||
|
|
||||||
@include media-breakpoint-down(md) {
|
|
||||||
flex-wrap: wrap;
|
|
||||||
}
|
|
||||||
|
|
||||||
@include media-breakpoint-down(sm) {
|
|
||||||
margin-top: 0.5em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.statsItem {
|
|
||||||
@include font-size(1.5rem);
|
|
||||||
|
|
||||||
margin-right: 1.6rem;
|
|
||||||
white-space: nowrap;
|
|
||||||
|
|
||||||
&:last-child {
|
|
||||||
margin-right: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
&.compact {
|
|
||||||
font-size: small;
|
|
||||||
}
|
|
||||||
|
|
||||||
&.followers {
|
|
||||||
word-break: keep-all;
|
|
||||||
}
|
|
||||||
|
|
||||||
&.button {
|
|
||||||
float: right;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.loadMoreContainer {
|
.loadMoreContainer {
|
||||||
margin-top: 48px;
|
margin-top: 48px;
|
||||||
text-align: center;
|
text-align: center;
|
|
@ -1,21 +1,22 @@
|
||||||
import type { Topic } from '../../graphql/schema/core.gen'
|
import type { Topic } from '../../../graphql/schema/core.gen'
|
||||||
|
|
||||||
import { Meta } from '@solidjs/meta'
|
import { Meta } from '@solidjs/meta'
|
||||||
import { clsx } from 'clsx'
|
import { clsx } from 'clsx'
|
||||||
import { For, Show, createEffect, createMemo, createSignal } from 'solid-js'
|
import { For, Show, createEffect, createMemo, createSignal } from 'solid-js'
|
||||||
|
|
||||||
import { useFollowing } from '../../context/following'
|
import { useFollowing } from '../../../context/following'
|
||||||
import { useLocalize } from '../../context/localize'
|
import { useLocalize } from '../../../context/localize'
|
||||||
import { useRouter } from '../../stores/router'
|
import { useRouter } from '../../../stores/router'
|
||||||
import { setTopicsSort, useTopicsStore } from '../../stores/zine/topics'
|
import { setTopicsSort, useTopicsStore } from '../../../stores/zine/topics'
|
||||||
import { capitalize } from '../../utils/capitalize'
|
import { capitalize } from '../../../utils/capitalize'
|
||||||
import { dummyFilter } from '../../utils/dummyFilter'
|
import { dummyFilter } from '../../../utils/dummyFilter'
|
||||||
import { getImageUrl } from '../../utils/getImageUrl'
|
import { getImageUrl } from '../../../utils/getImageUrl'
|
||||||
import { scrollHandler } from '../../utils/scroll'
|
import { scrollHandler } from '../../../utils/scroll'
|
||||||
import { TopicCard } from '../Topic/Card'
|
import { TopicCard } from '../../Topic/Card'
|
||||||
import { Loading } from '../_shared/Loading'
|
import { Loading } from '../../_shared/Loading'
|
||||||
import { SearchField } from '../_shared/SearchField'
|
import { SearchField } from '../../_shared/SearchField'
|
||||||
|
|
||||||
|
import { TopicBadge } from '../../Topic/TopicBadge'
|
||||||
import styles from './AllTopics.module.scss'
|
import styles from './AllTopics.module.scss'
|
||||||
|
|
||||||
type AllTopicsPageSearchParams = {
|
type AllTopicsPageSearchParams = {
|
||||||
|
@ -29,7 +30,7 @@ type Props = {
|
||||||
|
|
||||||
const PAGE_SIZE = 20
|
const PAGE_SIZE = 20
|
||||||
|
|
||||||
export const AllTopicsView = (props: Props) => {
|
export const AllTopics = (props: Props) => {
|
||||||
const { t, lang } = useLocalize()
|
const { t, lang } = useLocalize()
|
||||||
const { searchParams, changeSearchParams } = useRouter<AllTopicsPageSearchParams>()
|
const { searchParams, changeSearchParams } = useRouter<AllTopicsPageSearchParams>()
|
||||||
const [limit, setLimit] = createSignal(PAGE_SIZE)
|
const [limit, setLimit] = createSignal(PAGE_SIZE)
|
||||||
|
@ -41,8 +42,6 @@ export const AllTopicsView = (props: Props) => {
|
||||||
sortBy: searchParams().by || 'shouts',
|
sortBy: searchParams().by || 'shouts',
|
||||||
})
|
})
|
||||||
|
|
||||||
const { subscriptions } = useFollowing()
|
|
||||||
|
|
||||||
createEffect(() => {
|
createEffect(() => {
|
||||||
if (!searchParams().by) {
|
if (!searchParams().by) {
|
||||||
changeSearchParams({
|
changeSearchParams({
|
||||||
|
@ -76,7 +75,7 @@ export const AllTopicsView = (props: Props) => {
|
||||||
return keys
|
return keys
|
||||||
})
|
})
|
||||||
|
|
||||||
const subscribed = (topicSlug: string) => subscriptions.topics.some((topic) => topic.slug === topicSlug)
|
const { isOwnerSubscribed } = useFollowing()
|
||||||
|
|
||||||
const showMore = () => setLimit((oldLimit) => oldLimit + PAGE_SIZE)
|
const showMore = () => setLimit((oldLimit) => oldLimit + PAGE_SIZE)
|
||||||
const [searchQuery, setSearchQuery] = createSignal('')
|
const [searchQuery, setSearchQuery] = createSignal('')
|
||||||
|
@ -186,28 +185,18 @@ export const AllTopicsView = (props: Props) => {
|
||||||
|
|
||||||
<Show when={searchParams().by && searchParams().by !== 'title'}>
|
<Show when={searchParams().by && searchParams().by !== 'title'}>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-lg-20 col-xl-18">
|
<div class="col-lg-20 col-xl-18 py-4">
|
||||||
<For each={filteredResults().slice(0, limit())}>
|
<For each={filteredResults().slice(0, limit())}>
|
||||||
{(topic) => (
|
{(topic) => (
|
||||||
<>
|
<>
|
||||||
<TopicCard
|
<TopicBadge
|
||||||
topic={topic}
|
topic={topic}
|
||||||
compact={false}
|
isFollowed={{
|
||||||
subscribed={subscribed(topic.slug)}
|
loaded: filteredResults().length > 0,
|
||||||
showPublications={true}
|
value: isOwnerSubscribed(topic.slug),
|
||||||
showDescription={true}
|
}}
|
||||||
|
showStat={true}
|
||||||
/>
|
/>
|
||||||
<div class={styles.stats}>
|
|
||||||
<span class={styles.statsItem}>
|
|
||||||
{t('shoutsWithCount', { count: topic.stat.shouts })}
|
|
||||||
</span>
|
|
||||||
<span class={styles.statsItem}>
|
|
||||||
{t('authorsWithCount', { count: topic.stat.authors })}
|
|
||||||
</span>
|
|
||||||
<span class={styles.statsItem}>
|
|
||||||
{t('followersWithCount', { count: topic.stat.followers })}
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
</>
|
</>
|
||||||
)}
|
)}
|
||||||
</For>
|
</For>
|
1
src/components/Views/AllTopics/index.ts
Normal file
1
src/components/Views/AllTopics/index.ts
Normal file
|
@ -0,0 +1 @@
|
||||||
|
export { AllTopics } from './AllTopics'
|
|
@ -128,7 +128,6 @@ export const AuthorView = (props: Props) => {
|
||||||
const data = await apiClient.getReactionsBy({
|
const data = await apiClient.getReactionsBy({
|
||||||
by: { comment: true, created_by: commenter.id },
|
by: { comment: true, created_by: commenter.id },
|
||||||
})
|
})
|
||||||
console.debug('[components.Author] fetched comments', data)
|
|
||||||
setCommented(data)
|
setCommented(data)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -12,17 +12,15 @@ export const StaticPage = (props: Props) => {
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<PageLayout title={props.title}>
|
<PageLayout title={props.title}>
|
||||||
<div class="wide-container">
|
|
||||||
<div class="row">
|
|
||||||
<article
|
<article
|
||||||
class="col-md-16 col-lg-14 col-xl-12 offset-md-5"
|
class="wide-container container--static-page"
|
||||||
id="articleBody"
|
id="articleBody"
|
||||||
ref={(el) => (articleBodyElement.current = el)}
|
ref={(el) => (articleBodyElement.current = el)}
|
||||||
>
|
>
|
||||||
{props.children}
|
<div class="row">
|
||||||
</article>
|
<div class="col-md-12 col-xl-14 offset-md-5 order-md-first">{props.children}</div>
|
||||||
|
|
||||||
<div class="col-md-6 offset-md-1">
|
<div class="col-md-6 col-lg-4 order-md-last">
|
||||||
<TableOfContents
|
<TableOfContents
|
||||||
variant="article"
|
variant="article"
|
||||||
parentSelector="#articleBody"
|
parentSelector="#articleBody"
|
||||||
|
@ -30,7 +28,7 @@ export const StaticPage = (props: Props) => {
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</article>
|
||||||
</PageLayout>
|
</PageLayout>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
|
@ -20,7 +20,7 @@ interface FollowingContextType {
|
||||||
loadSubscriptions: () => void
|
loadSubscriptions: () => void
|
||||||
follow: (what: FollowingEntity, slug: string) => Promise<void>
|
follow: (what: FollowingEntity, slug: string) => Promise<void>
|
||||||
unfollow: (what: FollowingEntity, slug: string) => Promise<void>
|
unfollow: (what: FollowingEntity, slug: string) => Promise<void>
|
||||||
isOwnerSubscribed: (userId: number) => boolean
|
isOwnerSubscribed: (id: number | string) => boolean
|
||||||
}
|
}
|
||||||
|
|
||||||
const FollowingContext = createContext<FollowingContextType>()
|
const FollowingContext = createContext<FollowingContextType>()
|
||||||
|
@ -109,9 +109,11 @@ export const FollowingProvider = (props: { children: JSX.Element }) => {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const isOwnerSubscribed = (userId: number) => {
|
const isOwnerSubscribed = (id?: number | string) => {
|
||||||
if (!author()) return
|
if (!author() || !subscriptions) return
|
||||||
return !!subscriptions?.authors?.some((authorEntity) => authorEntity.id === userId)
|
const isAuthorSubscribed = subscriptions.authors?.some((authorEntity) => authorEntity.id === id)
|
||||||
|
const isTopicSubscribed = subscriptions.topics?.some((topicEntity) => topicEntity.slug === id)
|
||||||
|
return !!isAuthorSubscribed || !!isTopicSubscribed
|
||||||
}
|
}
|
||||||
|
|
||||||
const value: FollowingContextType = {
|
const value: FollowingContextType = {
|
||||||
|
|
|
@ -15,7 +15,6 @@ export const DiscussionRulesPage = () => {
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<StaticPage title={ogTitle}>
|
<StaticPage title={ogTitle}>
|
||||||
<article class="wide-container container--static-page">
|
|
||||||
<Meta name="descprition" content={description} />
|
<Meta name="descprition" content={description} />
|
||||||
<Meta name="keywords" content={t('principles keywords')} />
|
<Meta name="keywords" content={t('principles keywords')} />
|
||||||
<Meta name="og:type" content="article" />
|
<Meta name="og:type" content="article" />
|
||||||
|
@ -53,8 +52,8 @@ export const DiscussionRulesPage = () => {
|
||||||
|
|
||||||
<li>
|
<li>
|
||||||
<p>
|
<p>
|
||||||
Шовинизм, расизм, сексизм, гомофобия, пропаганда ненависти, педофилии, суицида,
|
Шовинизм, расизм, сексизм, гомофобия, пропаганда ненависти, педофилии, суицида, распространение
|
||||||
распространение детской порнографии и другого человеконенавистнического контента.
|
детской порнографии и другого человеконенавистнического контента.
|
||||||
</p>
|
</p>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
@ -69,9 +68,9 @@ export const DiscussionRulesPage = () => {
|
||||||
<p>
|
<p>
|
||||||
Неаргументированная критика и комментарии вроде «отстой», «зачем
|
Неаргументированная критика и комментарии вроде «отстой», «зачем
|
||||||
я это увидел/а», «не читал, но осуждаю», «либераху
|
я это увидел/а», «не читал, но осуждаю», «либераху
|
||||||
порвало», «лол», «скатились», «первый нах»
|
порвало», «лол», «скатились», «первый нах» и тому
|
||||||
и тому подобные. Односложные реплики не подразумевают возможность обогащающего
|
подобные. Односложные реплики не подразумевают возможность обогащающего диалога,
|
||||||
диалога, не продуктивны и никак не помогают авторам делать материалы лучше,
|
не продуктивны и никак не помогают авторам делать материалы лучше,
|
||||||
а читателям — разобраться.
|
а читателям — разобраться.
|
||||||
</p>
|
</p>
|
||||||
</li>
|
</li>
|
||||||
|
@ -95,9 +94,9 @@ export const DiscussionRulesPage = () => {
|
||||||
<strong>Обмен знаниями и историями.</strong> Осмысленные высказывания по теме поста,
|
<strong>Обмен знаниями и историями.</strong> Осмысленные высказывания по теме поста,
|
||||||
оригинальные рассуждения, рассказы о личном опыте и проектах, обмен профессиональной
|
оригинальные рассуждения, рассказы о личном опыте и проектах, обмен профессиональной
|
||||||
экспертизой, наблюдения и реальные истории из жизни — чем больше
|
экспертизой, наблюдения и реальные истории из жизни — чем больше
|
||||||
мы делимся друг с другом знаниями, тем интереснее и плодотворнее становится
|
мы делимся друг с другом знаниями, тем интереснее и плодотворнее становится наше
|
||||||
наше общение. Помните, что каждый вдумчивый ответ повышает качество дискуссий
|
общение. Помните, что каждый вдумчивый ответ повышает качество дискуссий в сообществе
|
||||||
в сообществе и делает чтение самиздата ещё интереснее.
|
и делает чтение самиздата ещё интереснее.
|
||||||
</p>
|
</p>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
@ -107,23 +106,22 @@ export const DiscussionRulesPage = () => {
|
||||||
направляют дискуссии в продуктивное русло, но и улучшают настроение.
|
направляют дискуссии в продуктивное русло, но и улучшают настроение.
|
||||||
Не вредите негативом, которого в интернете и без нас хватает,
|
Не вредите негативом, которого в интернете и без нас хватает,
|
||||||
и не травите на корню классные инициативы — всё великое начинается
|
и не травите на корню классные инициативы — всё великое начинается
|
||||||
с малого. Мы за поддерживающую и вдохновляющую атмосферу
|
с малого. Мы за поддерживающую и вдохновляющую атмосферу в сообществе.
|
||||||
в сообществе. Надеемся, вы тоже.
|
Надеемся, вы тоже.
|
||||||
</p>
|
</p>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
<li>
|
<li>
|
||||||
<p>
|
<p>
|
||||||
<strong>Благодарность и поддержка.</strong> Если публикация вам зашла,
|
<strong>Благодарность и поддержка.</strong> Если публикация вам зашла, не стесняйтесь
|
||||||
не стесняйтесь ставить лайки, делиться понравившимися материалами, благодарить авторов,
|
ставить лайки, делиться понравившимися материалами, благодарить авторов, читателей, художников
|
||||||
читателей, художников и редакторов в комментариях. Цените и поддерживайте
|
и редакторов в комментариях. Цените и поддерживайте классные проекты, сильные
|
||||||
классные проекты, сильные тексты, новое искусство, осмысленные комментарии и вклад других
|
тексты, новое искусство, осмысленные комментарии и вклад других
|
||||||
в самиздат — сотрудничество делает нас сильнее и усиливает звучание идей
|
в самиздат — сотрудничество делает нас сильнее и усиливает звучание идей
|
||||||
и смыслов, которые помогают лучше понимать мир.
|
и смыслов, которые помогают лучше понимать мир.
|
||||||
</p>
|
</p>
|
||||||
</li>
|
</li>
|
||||||
</ol>
|
</ol>
|
||||||
</article>
|
|
||||||
</StaticPage>
|
</StaticPage>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
|
@ -23,8 +23,11 @@ export const DogmaPage = () => {
|
||||||
<Meta name="twitter:card" content="summary_large_image" />
|
<Meta name="twitter:card" content="summary_large_image" />
|
||||||
<Meta name="twitter:title" content={ogTitle} />
|
<Meta name="twitter:title" content={ogTitle} />
|
||||||
<Meta name="twitter:description" content={description} />
|
<Meta name="twitter:description" content={description} />
|
||||||
<article class="wide-container container--static-page">
|
|
||||||
<h4>Редакционные принципы</h4>
|
<h1>
|
||||||
|
<span class="wrapped">Редакционные принципы</span>
|
||||||
|
</h1>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
Дискурс — журнал с открытой горизонтальной редакцией. Содержание журнала определяется прямым
|
Дискурс — журнал с открытой горизонтальной редакцией. Содержание журнала определяется прямым
|
||||||
голосованием его авторов. Мы нередко занимаем различные позиции по разным проблемам, но
|
голосованием его авторов. Мы нередко занимаем различные позиции по разным проблемам, но
|
||||||
|
@ -39,8 +42,8 @@ export const DogmaPage = () => {
|
||||||
<li>
|
<li>
|
||||||
<b>Ответственно относимся к источникам.</b>
|
<b>Ответственно относимся к источникам.</b>
|
||||||
Мы выбираем только надежные источники, проверяем информацию и рассказываем, как и откуда мы её
|
Мы выбираем только надежные источники, проверяем информацию и рассказываем, как и откуда мы её
|
||||||
получили, кроме случаев, когда это может нанести вред источникам. Тогда мы не раскроем их, даже
|
получили, кроме случаев, когда это может нанести вред источникам. Тогда мы не раскроем их, даже в
|
||||||
в суде.
|
суде.
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<b>Выбираем компетентных и независимых экспертов</b>, понимая всю степень ответственности перед
|
<b>Выбираем компетентных и независимых экспертов</b>, понимая всю степень ответственности перед
|
||||||
|
@ -63,7 +66,6 @@ export const DogmaPage = () => {
|
||||||
.
|
.
|
||||||
</li>
|
</li>
|
||||||
</ol>
|
</ol>
|
||||||
</article>
|
|
||||||
</StaticPage>
|
</StaticPage>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
|
@ -24,14 +24,13 @@ export const GuidePage = () => {
|
||||||
<Meta name="twitter:card" content="summary_large_image" />
|
<Meta name="twitter:card" content="summary_large_image" />
|
||||||
<Meta name="twitter:title" content={ogTitle} />
|
<Meta name="twitter:title" content={ogTitle} />
|
||||||
<Meta name="twitter:description" content={description} />
|
<Meta name="twitter:description" content={description} />
|
||||||
<article class="wide-container container--static-page">
|
|
||||||
<h1 id="about">
|
<h1 id="about">
|
||||||
<span class="wrapped">{ogTitle}</span>
|
<span class="wrapped">{ogTitle}</span>
|
||||||
</h1>
|
</h1>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
Дискурс — независимый журнал о культуре, науке, искусстве и обществе
|
Дискурс — независимый журнал о культуре, науке, искусстве и обществе с
|
||||||
с
|
|
||||||
<a href="/about/manifest">открытой редакцией</a>. У нас нет главного редактора, инвестора
|
<a href="/about/manifest">открытой редакцией</a>. У нас нет главного редактора, инвестора
|
||||||
и вообще никого, кто бы принимал единоличные решения. Вместо традиционных иерархий
|
и вообще никого, кто бы принимал единоличные решения. Вместо традиционных иерархий
|
||||||
Дискурс основан на принципах прямой демократии: в нашем горизонтальном сообществе все
|
Дискурс основан на принципах прямой демократии: в нашем горизонтальном сообществе все
|
||||||
|
@ -50,9 +49,9 @@ export const GuidePage = () => {
|
||||||
<li>
|
<li>
|
||||||
<p>
|
<p>
|
||||||
<a href="/topic/art">Искусство</a>
|
<a href="/topic/art">Искусство</a>
|
||||||
— здесь, например, представлены художественные произведения: литература,
|
— здесь, например, представлены художественные произведения: литература, живопись,
|
||||||
живопись, музыка, фотографии, видео. Этот раздел помогает прозвучать новому искусству,
|
музыка, фотографии, видео. Этот раздел помогает прозвучать новому искусству, которое создают
|
||||||
которое создают российские художники, писатели, режиссёры и музыканты.
|
российские художники, писатели, режиссёры и музыканты.
|
||||||
</p>
|
</p>
|
||||||
</li>
|
</li>
|
||||||
{/*
|
{/*
|
||||||
|
@ -83,24 +82,24 @@ export const GuidePage = () => {
|
||||||
материалы по жанрам (например, <a href="/topic/interview">интервью</a>,{' '}
|
материалы по жанрам (например, <a href="/topic/interview">интервью</a>,{' '}
|
||||||
<a href="/topic/reportage">репортажи</a>, <a href="/topic/essay">эссе</a>,{' '}
|
<a href="/topic/reportage">репортажи</a>, <a href="/topic/essay">эссе</a>,{' '}
|
||||||
<a href="/topic/likbez">ликбезы</a>
|
<a href="/topic/likbez">ликбезы</a>
|
||||||
), по тематике (<a href="/topic/cinema">кино</a>, <a href="/topic/philosophy">философия</a>
|
), по тематике (<a href="/topic/cinema">кино</a>, <a href="/topic/philosophy">философия</a>,{' '}
|
||||||
, <a href="/topic/history">история</a>, <a href="/topic/absurdism">абсурдизм</a>,{' '}
|
<a href="/topic/history">история</a>, <a href="/topic/absurdism">абсурдизм</a>,{' '}
|
||||||
<a href="/topic/sex">секс</a> и т.д.) или в серии (как «
|
<a href="/topic/sex">секс</a> и т.д.) или в серии (как «
|
||||||
<a href="/topic/zakony-mira">Законы мира</a>» или «
|
<a href="/topic/zakony-mira">Законы мира</a>» или «
|
||||||
<a href="/topic/za-liniey-mannergeyma">За линией Маннергейма</a>
|
<a href="/topic/za-liniey-mannergeyma">За линией Маннергейма</a>
|
||||||
»). Темы объединяют сотни публикаций, помогают ориентироваться в журнале
|
»). Темы объединяют сотни публикаций, помогают ориентироваться в журнале и следить
|
||||||
и следить за интересными материалами.
|
за интересными материалами.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<section>
|
<section>
|
||||||
<h3 id="become-author">Как стать автором журнала</h3>
|
<h3 id="become-author">Как стать автором журнала</h3>
|
||||||
<p>
|
<p>
|
||||||
Дискурс объединяет журналистов, активистов, музыкантов, художников, фотографов, режиссеров,
|
Дискурс объединяет журналистов, активистов, музыкантов, художников, фотографов, режиссеров,
|
||||||
философов, ученых и других замечательных людей. Каждый может{' '}
|
философов, ученых и других замечательных людей. Каждый может <a href="/create">прислать</a>{' '}
|
||||||
<a href="/create">прислать</a> свой материал в журнал. Формат и тематика
|
свой материал в журнал. Формат и тематика не имеют значения, единственное, что
|
||||||
не имеют значения, единственное, что важно —{' '}
|
важно — <a href="/how-to-write-a-good-article">хороший</a> ли материал. Если
|
||||||
<a href="/how-to-write-a-good-article">хороший</a> ли материал. Если сообщество поддержит
|
сообщество поддержит вашу публикацию, она выйдет в журнале и станет доступна тысячам
|
||||||
вашу публикацию, она выйдет в журнале и станет доступна тысячам наших читателей.
|
наших читателей.
|
||||||
</p>
|
</p>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
|
@ -167,8 +166,8 @@ export const GuidePage = () => {
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<p>
|
<p>
|
||||||
<strong>Возможность обратиться к широкой аудитории</strong>. Дискурс читают десятки
|
<strong>Возможность обратиться к широкой аудитории</strong>. Дискурс читают десятки тысяч
|
||||||
тысяч людей, и с каждым днем их становится больше.
|
людей, и с каждым днем их становится больше.
|
||||||
</p>
|
</p>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
|
@ -185,12 +184,11 @@ export const GuidePage = () => {
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<p>
|
<p>
|
||||||
<strong>Пресс-карты для корреспондентов</strong>. Три опубликованные статьи позволяют
|
<strong>Пресс-карты для корреспондентов</strong>. Три опубликованные статьи позволяют авторам
|
||||||
авторам Дискурса получить официальные удостоверения журналистов (пресс-карты)
|
Дискурса получить официальные удостоверения журналистов (пресс-карты) на следующий год.
|
||||||
на следующий год. Пресс-карты удостоверяют, что вы журналист и можете
|
Пресс-карты удостоверяют, что вы журналист и можете пользоваться всеми теми правами,
|
||||||
пользоваться всеми теми правами, которые гарантирует Закон о СМИ. Кроме того, многие
|
которые гарантирует Закон о СМИ. Кроме того, многие культурные институции (музеи, галереи
|
||||||
культурные институции (музеи, галереи и др.) предоставляют журналистам право свободного
|
и др.) предоставляют журналистам право свободного входа.
|
||||||
входа.
|
|
||||||
</p>
|
</p>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
|
@ -241,7 +239,6 @@ export const GuidePage = () => {
|
||||||
</a>
|
</a>
|
||||||
. Мы обязательно ответим.
|
. Мы обязательно ответим.
|
||||||
</p>
|
</p>
|
||||||
</article>
|
|
||||||
</>
|
</>
|
||||||
</StaticPage>
|
</StaticPage>
|
||||||
)
|
)
|
||||||
|
|
|
@ -27,24 +27,24 @@ export const HelpPage = () => {
|
||||||
<Meta name="twitter:card" content="summary_large_image" />
|
<Meta name="twitter:card" content="summary_large_image" />
|
||||||
<Meta name="twitter:title" content={ogTitle} />
|
<Meta name="twitter:title" content={ogTitle} />
|
||||||
<Meta name="twitter:description" content={description} />
|
<Meta name="twitter:description" content={description} />
|
||||||
<article class="wide-container container--static-page">
|
|
||||||
<h1 id="help-us">
|
<h1 id="help-us">
|
||||||
<span class="wrapped">Как вы можете поддержать Дискурс?</span>
|
<span class="wrapped">Как вы можете поддержать Дискурс?</span>
|
||||||
</h1>
|
</h1>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
Дискурс — уникальное независимое издание с горизонтальной редакцией,
|
Дискурс — уникальное независимое издание с горизонтальной редакцией, существующее
|
||||||
существующее в интересах своих читателей. Ваша поддержка действительно много
|
в интересах своих читателей. Ваша поддержка действительно много значит —
|
||||||
значит — не только для редакции Дискурса, но и для сохранения
|
не только для редакции Дискурса, но и для сохранения свободной мысли
|
||||||
свободной мысли и некоммерческого искусства в нашем обществе.
|
и некоммерческого искусства в нашем обществе.
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
Дискурс существует на добровольных началах. Никакой медиахолдинг, фонд или государственная
|
Дискурс существует на добровольных началах. Никакой медиахолдинг, фонд или государственная
|
||||||
структура не финансирует нас — благодаря этому мы можем писать о том,
|
структура не финансирует нас — благодаря этому мы можем писать о том,
|
||||||
что важно, а не о том, что выгодно. Сообщество наших волонтеров ежедневно
|
что важно, а не о том, что выгодно. Сообщество наших волонтеров ежедневно трудится,
|
||||||
трудится, чтобы рассказывать вам интересные, не освещенные другими изданиями
|
чтобы рассказывать вам интересные, не освещенные другими изданиями истории —
|
||||||
истории — но мы не сможем делать это без вашей помощи. Пожертвования
|
но мы не сможем делать это без вашей помощи. Пожертвования читателей составляют
|
||||||
читателей составляют основу нашего бюджета и позволяют нам существовать.
|
основу нашего бюджета и позволяют нам существовать.
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
Если вам нравится то, что мы делаем и вы хотите, чтобы Дискурс продолжался,
|
Если вам нравится то, что мы делаем и вы хотите, чтобы Дискурс продолжался,
|
||||||
|
@ -58,10 +58,9 @@ export const HelpPage = () => {
|
||||||
<h3 id="financial-report">На что пойдут деньги?</h3>
|
<h3 id="financial-report">На что пойдут деньги?</h3>
|
||||||
<p>
|
<p>
|
||||||
Ваши пожертвования пойдут на оплату серверов, содержание офиса, зарплату редакции
|
Ваши пожертвования пойдут на оплату серверов, содержание офиса, зарплату редакции
|
||||||
и налоги, оплату юридического сопровождения и труда бухгалтера, совершенствование
|
и налоги, оплату юридического сопровождения и труда бухгалтера, совершенствование сайта,
|
||||||
сайта, аренду помещения для открытой редакции, на печать альманаха Дискурс с лучшими
|
аренду помещения для открытой редакции, на печать альманаха Дискурс с лучшими текстами
|
||||||
текстами авторов за полгода, а также на другие редакционные и технические
|
авторов за полгода, а также на другие редакционные и технические расходы.
|
||||||
расходы.
|
|
||||||
</p>
|
</p>
|
||||||
<h3>Ваша помощь позволит нам</h3>
|
<h3>Ваша помощь позволит нам</h3>
|
||||||
<ul>
|
<ul>
|
||||||
|
@ -75,10 +74,10 @@ export const HelpPage = () => {
|
||||||
<li>
|
<li>
|
||||||
<h4>Создавать еще больше контента.</h4>
|
<h4>Создавать еще больше контента.</h4>
|
||||||
<p>
|
<p>
|
||||||
Каждый день к нам присоединяются новые люди, и чем больше нас становится, тем
|
Каждый день к нам присоединяются новые люди, и чем больше нас становится, тем больше
|
||||||
больше мы творим и строже оцениваем результаты творчества друг друга.
|
мы творим и строже оцениваем результаты творчества друг друга. В результате
|
||||||
В результате повышается и количество, и качество контента. Каждый день мы
|
повышается и количество, и качество контента. Каждый день мы трудимся, чтобы
|
||||||
трудимся, чтобы открывать нашим читателям новые грани окружающего мира.
|
открывать нашим читателям новые грани окружающего мира.
|
||||||
</p>
|
</p>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
|
@ -91,9 +90,9 @@ export const HelpPage = () => {
|
||||||
<li>
|
<li>
|
||||||
<h4>Модернизировать сайт.</h4>
|
<h4>Модернизировать сайт.</h4>
|
||||||
<p>
|
<p>
|
||||||
Мы совершенствуем платформу и стараемся сделать проект максимально удобным для
|
Мы совершенствуем платформу и стараемся сделать проект максимально удобным для вас.
|
||||||
вас. Мы работаем над мобильной версией, новым дизайном, фукционалом, системой
|
Мы работаем над мобильной версией, новым дизайном, фукционалом, системой регистрации,
|
||||||
регистрации, навигации и рекомендаций, которые сделают наше общение еще увлекательней.
|
навигации и рекомендаций, которые сделают наше общение еще увлекательней.
|
||||||
</p>
|
</p>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
|
@ -118,9 +117,9 @@ export const HelpPage = () => {
|
||||||
</p>
|
</p>
|
||||||
<h3 id="other">Как ещё можно поддержать Дискурс?</h3>
|
<h3 id="other">Как ещё можно поддержать Дискурс?</h3>
|
||||||
<p>
|
<p>
|
||||||
Есть много других способов поддержать Дискурс и труд наших авторов. Например,
|
Есть много других способов поддержать Дискурс и труд наших авторов. Например, вы можете
|
||||||
вы можете периодически рассказывать о проекте своим друзьям в соцсетях, делиться
|
периодически рассказывать о проекте своим друзьям в соцсетях, делиться хорошими
|
||||||
хорошими материалами или — что еще лучше — публиковать свои статьи
|
материалами или — что еще лучше — публиковать свои статьи
|
||||||
в «Дискурсе». Но главное, что вы можете сделать для Дискурса, —
|
в «Дискурсе». Но главное, что вы можете сделать для Дискурса, —
|
||||||
читать нас. Мы вкладываем в журнал душу, и внимание каждого читателя убеждает нас
|
читать нас. Мы вкладываем в журнал душу, и внимание каждого читателя убеждает нас
|
||||||
в правильности выбранного пути. Не переключайтесь.
|
в правильности выбранного пути. Не переключайтесь.
|
||||||
|
@ -133,7 +132,6 @@ export const HelpPage = () => {
|
||||||
</a>
|
</a>
|
||||||
.
|
.
|
||||||
</p>
|
</p>
|
||||||
</article>
|
|
||||||
</>
|
</>
|
||||||
</StaticPage>
|
</StaticPage>
|
||||||
)
|
)
|
||||||
|
|
|
@ -36,7 +36,7 @@ export const ManifestPage = () => {
|
||||||
<Meta name="twitter:card" content="summary_large_image" />
|
<Meta name="twitter:card" content="summary_large_image" />
|
||||||
<Meta name="twitter:title" content={ogTitle} />
|
<Meta name="twitter:title" content={ogTitle} />
|
||||||
<Meta name="twitter:description" content={description} />
|
<Meta name="twitter:description" content={description} />
|
||||||
<article class="wide-container container--static-page">
|
|
||||||
<h1 id="manifest">
|
<h1 id="manifest">
|
||||||
<span class="wrapped">Манифест</span>
|
<span class="wrapped">Манифест</span>
|
||||||
</h1>
|
</h1>
|
||||||
|
@ -46,8 +46,8 @@ export const ManifestPage = () => {
|
||||||
редакцией, основанный на принципах свободы слова, прямой демократии и совместного
|
редакцией, основанный на принципах свободы слова, прямой демократии и совместного
|
||||||
редактирования. Дискурс создаётся открытым медиасообществом ученых, журналистов, музыкантов,
|
редактирования. Дискурс создаётся открытым медиасообществом ученых, журналистов, музыкантов,
|
||||||
писателей, предпринимателей, философов, инженеров, художников и специалистов со всего
|
писателей, предпринимателей, философов, инженеров, художников и специалистов со всего
|
||||||
мира, объединившихся, чтобы вместе делать общий журнал и объяснять с разных точек
|
мира, объединившихся, чтобы вместе делать общий журнал и объяснять с разных точек зрения
|
||||||
зрения мозаичную картину современности.
|
мозаичную картину современности.
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
Мы пишем о культуре, науке и обществе, рассказываем о новых идеях
|
Мы пишем о культуре, науке и обществе, рассказываем о новых идеях
|
||||||
|
@ -62,9 +62,9 @@ export const ManifestPage = () => {
|
||||||
Редакция Дискурса открыта для всех: у нас нет цензуры, запретных тем и идеологических
|
Редакция Дискурса открыта для всех: у нас нет цензуры, запретных тем и идеологических
|
||||||
рамок. Каждый может <a href="/create">прислать материал</a> в журнал и
|
рамок. Каждый может <a href="/create">прислать материал</a> в журнал и
|
||||||
<a href="/about/guide">присоединиться к редакции</a>. Предоставляя трибуну для независимой
|
<a href="/about/guide">присоединиться к редакции</a>. Предоставляя трибуну для независимой
|
||||||
журналистики и художественных проектов, мы помогаем людям рассказывать свои истории
|
журналистики и художественных проектов, мы помогаем людям рассказывать свои истории так,
|
||||||
так, чтобы они были услышаны. Мы убеждены: чем больше голосов будет звучать
|
чтобы они были услышаны. Мы убеждены: чем больше голосов будет звучать на Дискурсе, тем
|
||||||
на Дискурсе, тем громче в полифонии мнений будет слышна истина.
|
громче в полифонии мнений будет слышна истина.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<h2 class="h2" id="participation">
|
<h2 class="h2" id="participation">
|
||||||
|
@ -81,8 +81,8 @@ export const ManifestPage = () => {
|
||||||
<h3 id="contribute">Предлагать материалы</h3>
|
<h3 id="contribute">Предлагать материалы</h3>
|
||||||
</summary>
|
</summary>
|
||||||
<p>
|
<p>
|
||||||
<a href="/create">Создавайте</a> свои статьи и художественные работы — лучшие
|
<a href="/create">Создавайте</a> свои статьи и художественные работы — лучшие из
|
||||||
из них будут опубликованы в журнале. Дискурс — некоммерческое издание, авторы
|
них будут опубликованы в журнале. Дискурс — некоммерческое издание, авторы
|
||||||
публикуются в журнале на общественных началах, получая при этом{' '}
|
публикуются в журнале на общественных началах, получая при этом{' '}
|
||||||
<a href="/create?collab=true">поддержку</a> редакции, право голоса, множество других
|
<a href="/create?collab=true">поддержку</a> редакции, право голоса, множество других
|
||||||
возможностей и читателей по всему миру.
|
возможностей и читателей по всему миру.
|
||||||
|
@ -95,8 +95,8 @@ export const ManifestPage = () => {
|
||||||
</summary>
|
</summary>
|
||||||
<p>
|
<p>
|
||||||
Дискурс существует на пожертвования читателей. Если вам нравится журнал, пожалуйста,{' '}
|
Дискурс существует на пожертвования читателей. Если вам нравится журнал, пожалуйста,{' '}
|
||||||
<a href="/about/help">поддержите</a> нашу работу. Ваши пожертвования пойдут на выпуск
|
<a href="/about/help">поддержите</a> нашу работу. Ваши пожертвования пойдут на выпуск новых
|
||||||
новых материалов, оплату серверов, труда программистов, дизайнеров и редакторов.
|
материалов, оплату серверов, труда программистов, дизайнеров и редакторов.
|
||||||
</p>
|
</p>
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
|
@ -117,8 +117,8 @@ export const ManifestPage = () => {
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
Если вы разработчик и хотите помогать с развитием сайта Дискурса,{' '}
|
Если вы разработчик и хотите помогать с развитием сайта Дискурса,{' '}
|
||||||
<a href="mailto:services@discours.io">присоединяйтесь к IT-команде самиздата</a>.
|
<a href="mailto:services@discours.io">присоединяйтесь к IT-команде самиздата</a>. Открытый
|
||||||
Открытый код платформы для независимой журналистики, а также всех наших спецпроектов
|
код платформы для независимой журналистики, а также всех наших спецпроектов
|
||||||
и медиаинструментов находится{' '}
|
и медиаинструментов находится{' '}
|
||||||
<a href="https://github.com/Discours">в свободном доступе на GitHub</a>.
|
<a href="https://github.com/Discours">в свободном доступе на GitHub</a>.
|
||||||
</p>
|
</p>
|
||||||
|
@ -157,7 +157,6 @@ export const ManifestPage = () => {
|
||||||
<a href="mailto:welcome@discours.io">welcome@discours.io</a>. Мы обязательно ответим
|
<a href="mailto:welcome@discours.io">welcome@discours.io</a>. Мы обязательно ответим
|
||||||
и постараемся реализовать все хорошие задумки.
|
и постараемся реализовать все хорошие задумки.
|
||||||
</p>
|
</p>
|
||||||
</article>
|
|
||||||
</>
|
</>
|
||||||
</StaticPage>
|
</StaticPage>
|
||||||
)
|
)
|
||||||
|
|
|
@ -13,7 +13,6 @@ export const PartnersPage = () => {
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<StaticPage title={ogTitle}>
|
<StaticPage title={ogTitle}>
|
||||||
<article class="wide-container container--static-page">
|
|
||||||
<Meta name="descprition" content={description} />
|
<Meta name="descprition" content={description} />
|
||||||
<Meta name="keywords" content={t('keywords')} />
|
<Meta name="keywords" content={t('keywords')} />
|
||||||
<Meta name="og:type" content="article" />
|
<Meta name="og:type" content="article" />
|
||||||
|
@ -24,12 +23,8 @@ export const PartnersPage = () => {
|
||||||
<Meta name="twitter:card" content="summary_large_image" />
|
<Meta name="twitter:card" content="summary_large_image" />
|
||||||
<Meta name="twitter:title" content={ogTitle} />
|
<Meta name="twitter:title" content={ogTitle} />
|
||||||
<Meta name="twitter:description" content={description} />
|
<Meta name="twitter:description" content={description} />
|
||||||
<div class="row">
|
|
||||||
<div class="col-md-12 col-xl-14 offset-md-5 order-md-first">
|
|
||||||
<h1>{t('Partners')}</h1>
|
<h1>{t('Partners')}</h1>
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</article>
|
|
||||||
</StaticPage>
|
</StaticPage>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
|
@ -13,7 +13,6 @@ export const PrinciplesPage = () => {
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<StaticPage title={ogTitle}>
|
<StaticPage title={ogTitle}>
|
||||||
<article class="wide-container container--static-page">
|
|
||||||
<Meta name="descprition" content={description} />
|
<Meta name="descprition" content={description} />
|
||||||
<Meta name="keywords" content={t('principles keywords')} />
|
<Meta name="keywords" content={t('principles keywords')} />
|
||||||
<Meta name="og:type" content="article" />
|
<Meta name="og:type" content="article" />
|
||||||
|
@ -24,6 +23,7 @@ export const PrinciplesPage = () => {
|
||||||
<Meta name="twitter:card" content="summary_large_image" />
|
<Meta name="twitter:card" content="summary_large_image" />
|
||||||
<Meta name="twitter:title" content={ogTitle} />
|
<Meta name="twitter:title" content={ogTitle} />
|
||||||
<Meta name="twitter:description" content={description} />
|
<Meta name="twitter:description" content={description} />
|
||||||
|
|
||||||
<h1>
|
<h1>
|
||||||
<span class="wrapped">{ogTitle}</span>
|
<span class="wrapped">{ogTitle}</span>
|
||||||
</h1>
|
</h1>
|
||||||
|
@ -41,17 +41,17 @@ export const PrinciplesPage = () => {
|
||||||
<li>
|
<li>
|
||||||
<p>
|
<p>
|
||||||
<strong>Многоголосие</strong>. Мы ценим свободу слова и аргументированные мнения.
|
<strong>Многоголосие</strong>. Мы ценим свободу слова и аргументированные мнения.
|
||||||
Предоставляя трибуну каждому, кому есть что сказать, самиздат отражает полифонию позиций,
|
Предоставляя трибуну каждому, кому есть что сказать, самиздат отражает полифонию позиций, знаний
|
||||||
знаний и опыта, которые открывают более полную картину реальности.
|
и опыта, которые открывают более полную картину реальности.
|
||||||
</p>
|
</p>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<p>
|
<p>
|
||||||
<strong>Взаимопомощь</strong>. Мы помогаем друг другу, потому что хотим, чтобы
|
<strong>Взаимопомощь</strong>. Мы помогаем друг другу, потому что хотим, чтобы в мире
|
||||||
в мире было еще больше хорошего. Обсуждая что-то, мы всегда интересуемся, чем можем
|
было еще больше хорошего. Обсуждая что-то, мы всегда интересуемся, чем можем помочь.
|
||||||
помочь. В самиздате можно найти специалистов практически в любых сферах
|
В самиздате можно найти специалистов практически в любых сферах и получить
|
||||||
и получить поддержку от сотен людей. Благодаря коллективной экспертизе глобального
|
поддержку от сотен людей. Благодаря коллективной экспертизе глобального сообщества
|
||||||
сообщества в самиздате выходят крутейшие публикации, которыми можно вечно гордиться.
|
в самиздате выходят крутейшие публикации, которыми можно вечно гордиться.
|
||||||
</p>
|
</p>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
|
@ -64,8 +64,8 @@ export const PrinciplesPage = () => {
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<p>
|
<p>
|
||||||
<strong>Созидание</strong>. Мы создаем, потому что любим создавать. Мы открыто
|
<strong>Созидание</strong>. Мы создаем, потому что любим создавать. Мы открыто делимся
|
||||||
делимся опытом, дарим идеи, обмениваемся мнениями и благодарим за критику, используя
|
опытом, дарим идеи, обмениваемся мнениями и благодарим за критику, используя
|
||||||
ее для совершенствования мастерства и саморазвития. Мы знаем, что мир
|
ее для совершенствования мастерства и саморазвития. Мы знаем, что мир
|
||||||
не идеальное место, и делаем всё возможное, чтобы он стал лучше.
|
не идеальное место, и делаем всё возможное, чтобы он стал лучше.
|
||||||
</p>
|
</p>
|
||||||
|
@ -78,11 +78,10 @@ export const PrinciplesPage = () => {
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
Открытая редакция объединяет сотни потрясающих людей со всего мира, которые делают крутейшие
|
Открытая редакция объединяет сотни потрясающих людей со всего мира, которые делают крутейшие
|
||||||
вещи. Это пространство, где доверяют, вдохновляют, исследуют и создают новое вместе.
|
вещи. Это пространство, где доверяют, вдохновляют, исследуют и создают новое вместе. Поскольку
|
||||||
Поскольку все в сообществе очень разные, как-то мы собрались и решили зафиксировать
|
все в сообществе очень разные, как-то мы собрались и решили зафиксировать базовые
|
||||||
базовые ценности открытой редакции, а заодно придумали универсальные правила взаимодействия,
|
ценности открытой редакции, а заодно придумали универсальные правила взаимодействия, чтобы
|
||||||
чтобы общение было не только плодотворным, но и приятным для всех участников
|
общение было не только плодотворным, но и приятным для всех участников сообщества.
|
||||||
сообщества.
|
|
||||||
</p>
|
</p>
|
||||||
<ol>
|
<ol>
|
||||||
<li>
|
<li>
|
||||||
|
@ -108,14 +107,13 @@ export const PrinciplesPage = () => {
|
||||||
<li>
|
<li>
|
||||||
<p>
|
<p>
|
||||||
<strong>Критикуем и реагируем конструктивно</strong>. Самиздат про то, чтобы
|
<strong>Критикуем и реагируем конструктивно</strong>. Самиздат про то, чтобы
|
||||||
разбираться в сложных вещах всем сообществом, поэтому мы тактично и без
|
разбираться в сложных вещах всем сообществом, поэтому мы тактично и без агрессии
|
||||||
агрессии делимся мнениями, стараясь убедительно аргументировать позиции.
|
делимся мнениями, стараясь убедительно аргументировать позиции. И с благодарностью
|
||||||
И с благодарностью принимаем критику, используя ее для улучшения наших
|
принимаем критику, используя ее для улучшения наших проектов. Мы верим, что каждый
|
||||||
проектов. Мы верим, что каждый участник сообщества имеет добрые намерения,
|
участник сообщества имеет добрые намерения, и придерживаемся принципов доброжелательной
|
||||||
и придерживаемся принципов доброжелательной критики, стараемся делиться
|
критики, стараемся делиться советами — лучшим средством для самосовершенствования.
|
||||||
советами — лучшим средством для самосовершенствования. Обоснованная критика
|
Обоснованная критика помогает и адресату, и всем участникам сообщества досконально
|
||||||
помогает и адресату, и всем участникам сообщества досконально изучить тему
|
изучить тему и глубже разобраться в проблеме.
|
||||||
и глубже разобраться в проблеме.
|
|
||||||
</p>
|
</p>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
@ -134,10 +132,10 @@ export const PrinciplesPage = () => {
|
||||||
|
|
||||||
<li>
|
<li>
|
||||||
<p>
|
<p>
|
||||||
<strong>Не переходим на личности — это признак токсичности</strong>.
|
<strong>Не переходим на личности — это признак токсичности</strong>. Всегда
|
||||||
Всегда мудрее обсуждать точку зрения человека, а не его самого, даже если
|
мудрее обсуждать точку зрения человека, а не его самого, даже если он вам
|
||||||
он вам не импонирует. Предвзятое отношение ограничивает кругозор, добавляет
|
не импонирует. Предвзятое отношение ограничивает кругозор, добавляет преждевременные
|
||||||
преждевременные морщины и не помогает окружающим стать лучше. Вежливость
|
морщины и не помогает окружающим стать лучше. Вежливость
|
||||||
и взаимоуважение — краеугольная основа вдумчивых и осмысленных дискуссий.
|
и взаимоуважение — краеугольная основа вдумчивых и осмысленных дискуссий.
|
||||||
</p>
|
</p>
|
||||||
</li>
|
</li>
|
||||||
|
@ -156,19 +154,19 @@ export const PrinciplesPage = () => {
|
||||||
<p>
|
<p>
|
||||||
<strong>Даем еще один шанс</strong>. Все совершают ошибки, и за один проступок
|
<strong>Даем еще один шанс</strong>. Все совершают ошибки, и за один проступок
|
||||||
не стоит вычеркивать людей из жизни. Ошибки нужны, чтобы на них учиться
|
не стоит вычеркивать людей из жизни. Ошибки нужны, чтобы на них учиться
|
||||||
и делать выводы. Однако если многократно и систематически нарушать правила
|
и делать выводы. Однако если многократно и систематически нарушать правила сообщества,
|
||||||
сообщества, наверняка можно заслужить минусы в карму от других участников
|
наверняка можно заслужить минусы в карму от других участников и потерять доступ
|
||||||
и потерять доступ к сообществу.
|
к сообществу.
|
||||||
</p>
|
</p>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
<li>
|
<li>
|
||||||
<p>
|
<p>
|
||||||
<strong>Вместе создаем идеальную среду общения</strong>. Открытая редакция — это
|
<strong>Вместе создаем идеальную среду общения</strong>. Открытая редакция — это
|
||||||
утопическое пространство обогащающей и осмысленной коммуникации. Атмосфера
|
утопическое пространство обогащающей и осмысленной коммуникации. Атмосфера горизонтального
|
||||||
горизонтального сообщества складывается из действий каждого, поэтому мы действуем
|
сообщества складывается из действий каждого, поэтому мы действуем так, чтобы
|
||||||
так, чтобы способствовать сотворчеству, коллективному познанию и развитию самиздата
|
способствовать сотворчеству, коллективному познанию и развитию самиздата и нашей
|
||||||
и нашей альтернативной интеллектуальной медиасреды.
|
альтернативной интеллектуальной медиасреды.
|
||||||
</p>
|
</p>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
@ -176,14 +174,13 @@ export const PrinciplesPage = () => {
|
||||||
<p>
|
<p>
|
||||||
<strong>Помним, что всё в сообществе зависит от нас</strong>. Если нам чего-то
|
<strong>Помним, что всё в сообществе зависит от нас</strong>. Если нам чего-то
|
||||||
не хватает, мы начинаем действовать — рассказываем об идее, находим
|
не хватает, мы начинаем действовать — рассказываем об идее, находим
|
||||||
единомышленников, готовим и запускаем проект. Так в сообществе становится
|
единомышленников, готовим и запускаем проект. Так в сообществе становится на одну
|
||||||
на одну крутую активность больше. Так появилось наше сообщество. Так появился самиздат
|
крутую активность больше. Так появилось наше сообщество. Так появился самиздат и все
|
||||||
и все проекты открытой редакции. Чтобы в сообществе случилось что-то прекрасное,
|
проекты открытой редакции. Чтобы в сообществе случилось что-то прекрасное, достаточно
|
||||||
достаточно просто положить этому начало.
|
просто положить этому начало.
|
||||||
</p>
|
</p>
|
||||||
</li>
|
</li>
|
||||||
</ol>
|
</ol>
|
||||||
</article>
|
|
||||||
</StaticPage>
|
</StaticPage>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
|
@ -24,7 +24,6 @@ export const TermsOfUsePage = () => {
|
||||||
<Meta name="twitter:title" content={ogTitle} />
|
<Meta name="twitter:title" content={ogTitle} />
|
||||||
<Meta name="twitter:description" content={description} />
|
<Meta name="twitter:description" content={description} />
|
||||||
|
|
||||||
<article class="wide-container container--static-page">
|
|
||||||
<h1 id="terms-of-use">
|
<h1 id="terms-of-use">
|
||||||
<span class="wrapped">Пользовательское соглашение</span>
|
<span class="wrapped">Пользовательское соглашение</span>
|
||||||
</h1>
|
</h1>
|
||||||
|
@ -112,8 +111,8 @@ export const TermsOfUsePage = () => {
|
||||||
<li>
|
<li>
|
||||||
<p>
|
<p>
|
||||||
Цитирование, распространение, доведение до всеобщего сведения материалов Cайта
|
Цитирование, распространение, доведение до всеобщего сведения материалов Cайта
|
||||||
приветствуется. При использовании материалов сайта необходимо указать имя автора
|
приветствуется. При использовании материалов сайта необходимо указать имя автора и активную
|
||||||
и активную ссылку на материал на Сайте.
|
ссылку на материал на Сайте.
|
||||||
</p>
|
</p>
|
||||||
</li>
|
</li>
|
||||||
</ol>
|
</ol>
|
||||||
|
@ -131,8 +130,8 @@ export const TermsOfUsePage = () => {
|
||||||
<ul>
|
<ul>
|
||||||
<li>
|
<li>
|
||||||
Публиковать контент, авторские права на который принадлежат третьим лицам, без согласия
|
Публиковать контент, авторские права на который принадлежат третьим лицам, без согласия
|
||||||
этих лиц. Если авторские права на контент принадлежат нескольким лицам, то его
|
этих лиц. Если авторские права на контент принадлежат нескольким лицам, то его публикация
|
||||||
публикация предполагает согласие их всех.
|
предполагает согласие их всех.
|
||||||
</li>
|
</li>
|
||||||
<li>Размещать коммерческую и политическую рекламу.</li>
|
<li>Размещать коммерческую и политическую рекламу.</li>
|
||||||
<li>
|
<li>
|
||||||
|
@ -175,8 +174,8 @@ export const TermsOfUsePage = () => {
|
||||||
<p>
|
<p>
|
||||||
Данные, которые пользователи сообщают о себе сами при подаче заявки, регистрации,
|
Данные, которые пользователи сообщают о себе сами при подаче заявки, регистрации,
|
||||||
авторизации или заполнения профиля, в том числе ФИО и контактную информацию.
|
авторизации или заполнения профиля, в том числе ФИО и контактную информацию.
|
||||||
Конфиденциальные данные, такие как идентификатор и электронный адрес, используются
|
Конфиденциальные данные, такие как идентификатор и электронный адрес, используются для
|
||||||
для идентификации пользователя. Данные профиля, размещённые публично по желанию
|
идентификации пользователя. Данные профиля, размещённые публично по желанию
|
||||||
пользователя, которое выражается фактом их предоставления, используется для
|
пользователя, которое выражается фактом их предоставления, используется для
|
||||||
демонстрации другим пользователям той информации о себе, которую пользователь готов
|
демонстрации другим пользователям той информации о себе, которую пользователь готов
|
||||||
предоставить.
|
предоставить.
|
||||||
|
@ -198,8 +197,8 @@ export const TermsOfUsePage = () => {
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<p class="ng-binding">
|
<p class="ng-binding">
|
||||||
По желанию пользователя Издательство готово удалить любую информацию о нем,
|
По желанию пользователя Издательство готово удалить любую информацию о нем, собранную
|
||||||
собранную автоматическим путем. Для этого следует написать на адрес электронной почты{' '}
|
автоматическим путем. Для этого следует написать на адрес электронной почты{' '}
|
||||||
<a href="mailto:welcome@discours.io" target="_blank" rel="noreferrer">
|
<a href="mailto:welcome@discours.io" target="_blank" rel="noreferrer">
|
||||||
welcome@discours.io
|
welcome@discours.io
|
||||||
</a>
|
</a>
|
||||||
|
@ -240,7 +239,6 @@ export const TermsOfUsePage = () => {
|
||||||
</a>{' '}
|
</a>{' '}
|
||||||
или через форму <a href="/connect">«предложить идею»</a>.
|
или через форму <a href="/connect">«предложить идею»</a>.
|
||||||
</p>
|
</p>
|
||||||
</article>
|
|
||||||
</StaticPage>
|
</StaticPage>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,7 +14,6 @@ export const ThanksPage = () => {
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<StaticPage title={ogTitle}>
|
<StaticPage title={ogTitle}>
|
||||||
<article class="wide-container container--static-page">
|
|
||||||
<Meta name="descprition" content={description} />
|
<Meta name="descprition" content={description} />
|
||||||
<Meta name="keywords" content={t('keywords')} />
|
<Meta name="keywords" content={t('keywords')} />
|
||||||
<Meta name="og:type" content="article" />
|
<Meta name="og:type" content="article" />
|
||||||
|
@ -25,6 +24,7 @@ export const ThanksPage = () => {
|
||||||
<Meta name="twitter:card" content="summary_large_image" />
|
<Meta name="twitter:card" content="summary_large_image" />
|
||||||
<Meta name="twitter:title" content={ogTitle} />
|
<Meta name="twitter:title" content={ogTitle} />
|
||||||
<Meta name="twitter:description" content={description} />
|
<Meta name="twitter:description" content={description} />
|
||||||
|
|
||||||
<h1>
|
<h1>
|
||||||
<span class="wrapped">{ogTitle}</span>
|
<span class="wrapped">{ogTitle}</span>
|
||||||
</h1>
|
</h1>
|
||||||
|
@ -56,12 +56,12 @@ export const ThanksPage = () => {
|
||||||
<h3>Неоценимый вклад в Дискурс внесли и вносят</h3>
|
<h3>Неоценимый вклад в Дискурс внесли и вносят</h3>
|
||||||
<p>
|
<p>
|
||||||
Мария Бессмертная, Дамир Бикчурин, Константин Ворович, Ян Выговский, Эльдар Гариффулин, Павел
|
Мария Бессмертная, Дамир Бикчурин, Константин Ворович, Ян Выговский, Эльдар Гариффулин, Павел
|
||||||
Гафаров, Виктория Гендлина, Александр Гусев, Данила Давыдов, Константин Дубовик, Вячеслав
|
Гафаров, Виктория Гендлина, Александр Гусев, Данила Давыдов, Константин Дубовик, Вячеслав Еременко,
|
||||||
Еременко, Кристина Ибрагим, Екатерина Ильина, Анна Капаева, Яна Климова, Александр Коренков, Ирэна
|
Кристина Ибрагим, Екатерина Ильина, Анна Капаева, Яна Климова, Александр Коренков, Ирэна Лесневская,
|
||||||
Лесневская, Игорь Лобанов, Анастасия Лозовая, Григорий Ломизе, Евгений Медведев, Павел Никулин,
|
Игорь Лобанов, Анастасия Лозовая, Григорий Ломизе, Евгений Медведев, Павел Никулин, Николай
|
||||||
Николай Носачевский, Андрей Орловский, Михаил Панин, Антон Панов, Павел Пепперштейн, Любовь
|
Носачевский, Андрей Орловский, Михаил Панин, Антон Панов, Павел Пепперштейн, Любовь Покровская, Илья
|
||||||
Покровская, Илья Розовский, Денис Светличный, Павел Соколов, Сергей Стрельников, Глеб Струнников,
|
Розовский, Денис Светличный, Павел Соколов, Сергей Стрельников, Глеб Струнников, Николай Тарковский,
|
||||||
Николай Тарковский, Кирилл Филимонов, Алексей Хапов, Екатерина Харитонова
|
Кирилл Филимонов, Алексей Хапов, Екатерина Харитонова
|
||||||
</p>
|
</p>
|
||||||
<h3>Авторы</h3>
|
<h3>Авторы</h3>
|
||||||
<p>
|
<p>
|
||||||
|
@ -70,25 +70,24 @@ export const ThanksPage = () => {
|
||||||
каждому автору
|
каждому автору
|
||||||
</a>{' '}
|
</a>{' '}
|
||||||
за участие и поддержку проекта. Сегодня, когда для большинства деньги стали целью
|
за участие и поддержку проекта. Сегодня, когда для большинства деньги стали целью
|
||||||
и основным источником мотивации, бескорыстная помощь и основанный на энтузиазме
|
и основным источником мотивации, бескорыстная помощь и основанный на энтузиазме труд
|
||||||
труд бесценны. Именно вы своим трудом каждый день делаете Дискурс таким, какой он есть.
|
бесценны. Именно вы своим трудом каждый день делаете Дискурс таким, какой он есть.
|
||||||
</p>
|
</p>
|
||||||
<h3>Иллюстраторы</h3>
|
<h3>Иллюстраторы</h3>
|
||||||
<p>
|
<p>
|
||||||
Ольга Аверинова, Регина Акчурина, Айгуль Берхеева, Екатерина Вакуленко, Анастасия Викулова, Мария
|
Ольга Аверинова, Регина Акчурина, Айгуль Берхеева, Екатерина Вакуленко, Анастасия Викулова, Мария
|
||||||
Власенко, Ванесса Гаврилова, Ольга Горше, Ксения Горшкова, Ангелина Гребенюкова, Илья Diliago,
|
Власенко, Ванесса Гаврилова, Ольга Горше, Ксения Горшкова, Ангелина Гребенюкова, Илья Diliago, Антон
|
||||||
Антон Жаголкин, Саша Керова, Ольга Машинец, Злата Мечетина, Тала Никитина, Никита Поздняков,
|
Жаголкин, Саша Керова, Ольга Машинец, Злата Мечетина, Тала Никитина, Никита Поздняков, Матвей
|
||||||
Матвей Сапегин, Татьяна Сафонова, Виктория Шибаева
|
Сапегин, Татьяна Сафонова, Виктория Шибаева
|
||||||
</p>
|
</p>
|
||||||
<h3>Меценаты</h3>
|
<h3>Меценаты</h3>
|
||||||
<p>
|
<p>
|
||||||
Дискурс существует исключительно на пожертвования читателей. Мы бесконечно признательны
|
Дискурс существует исключительно на пожертвования читателей. Мы бесконечно признательны
|
||||||
всем, кто нас поддерживает. Ваши пожертвования — финансовый фундамент журнала.
|
всем, кто нас поддерживает. Ваши пожертвования — финансовый фундамент журнала. Благодаря
|
||||||
Благодаря вам мы развиваем платформу качественной журналистики, которая помогает самым разным
|
вам мы развиваем платформу качественной журналистики, которая помогает самым разным авторам
|
||||||
авторам быть услышанными. Стать нашим меценатом и подписаться на ежемесячную поддержку
|
быть услышанными. Стать нашим меценатом и подписаться на ежемесячную поддержку проекта
|
||||||
проекта можно <a href="/about/help">здесь</a>.
|
можно <a href="/about/help">здесь</a>.
|
||||||
</p>
|
</p>
|
||||||
</article>
|
|
||||||
</StaticPage>
|
</StaticPage>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,7 +2,7 @@ import type { PageProps } from './types'
|
||||||
|
|
||||||
import { createSignal, onMount } from 'solid-js'
|
import { createSignal, onMount } from 'solid-js'
|
||||||
|
|
||||||
import { AllTopicsView } from '../components/Views/AllTopics'
|
import { AllTopics } from '../components/Views/AllTopics'
|
||||||
import { PageLayout } from '../components/_shared/PageLayout'
|
import { PageLayout } from '../components/_shared/PageLayout'
|
||||||
import { useLocalize } from '../context/localize'
|
import { useLocalize } from '../context/localize'
|
||||||
import { loadAllTopics } from '../stores/zine/topics'
|
import { loadAllTopics } from '../stores/zine/topics'
|
||||||
|
@ -23,7 +23,7 @@ export const AllTopicsPage = (props: PageProps) => {
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<PageLayout title={t('Themes and plots')}>
|
<PageLayout title={t('Themes and plots')}>
|
||||||
<AllTopicsView isLoaded={isLoaded()} topics={props.allTopics} />
|
<AllTopics isLoaded={isLoaded()} topics={props.allTopics} />
|
||||||
</PageLayout>
|
</PageLayout>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
|
@ -50,4 +50,9 @@ export type UploadedFile = {
|
||||||
originalFilename?: string
|
originalFilename?: string
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export type FollowedInfo = {
|
||||||
|
value?: boolean
|
||||||
|
loaded?: boolean
|
||||||
|
}
|
||||||
|
|
||||||
export type SubscriptionFilter = 'all' | 'authors' | 'topics' | 'communities'
|
export type SubscriptionFilter = 'all' | 'authors' | 'topics' | 'communities'
|
||||||
|
|
Loading…
Reference in New Issue
Block a user