Skip to content

Commit

Permalink
Add thread options to headerss
Browse files Browse the repository at this point in the history
  • Loading branch information
rafalp committed Dec 31, 2022
1 parent d0a55c9 commit 1d7beb5
Show file tree
Hide file tree
Showing 35 changed files with 509 additions and 828 deletions.
15 changes: 14 additions & 1 deletion frontend/src/components/Breadcrumbs/BreadcrumbsCategory.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,20 @@ const BreadcrumbsCategory = ({ category, className }) => (
>
label
</span>
<span className="breadcrumbs-item-name">{category.name}</span>
{!!category.short_name && (
<span
className="breadcrumbs-item-name hidden-sm hidden-md hidden-lg"
title={category.name}
>
{category.short_name}
</span>
)}
{!!category.short_name && (
<span className="breadcrumbs-item-name hidden-xs">{category.name}</span>
)}
{!category.short_name && (
<span className="breadcrumbs-item-name">{category.name}</span>
)}
</a>
</li>
)
Expand Down
2 changes: 1 addition & 1 deletion frontend/src/components/FlexRow/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,4 @@ import FlexRow from "./FlexRow"
import FlexRowCol from "./FlexRowCol"
import FlexRowSection from "./FlexRowSection"

export { FlexRow, FlexRowCol, FlexRowSection }
export { FlexRow, FlexRowCol, FlexRowSection }
5 changes: 1 addition & 4 deletions frontend/src/components/ThreadFlags.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -19,10 +19,7 @@ const ThreadFlags = ({ thread }) => (
</li>
)}
{thread.best_answer && (
<li
className="thread-flag-answered"
title={gettext("Answered")}
>
<li className="thread-flag-answered" title={gettext("Answered")}>
<span className="material-icon">check_circle</span>
</li>
)}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import React from "react"

const ThreadsListItemReplies = ({ thread }) => (
const ThreadReplies = ({ thread }) => (
<span
className="threads-list-item-replies"
className="threads-replies"
title={interpolate(
ngettext("%(replies)s reply", "%(replies)s replies", thread.replies),
{ replies: thread.replies },
Expand All @@ -16,4 +16,4 @@ const ThreadsListItemReplies = ({ thread }) => (
</span>
)

export default ThreadsListItemReplies
export default ThreadReplies
49 changes: 49 additions & 0 deletions frontend/src/components/ThreadStarterCard.jsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
import React from "react"
import Avatar from "./avatar"

const ThreadStarterCard = ({ thread }) => (
<div className="thread-user-card">
<div className="thread-user-card-media">
{thread.starter ? (
<a href={thread.url.starter}>
<Avatar size={40} user={thread.starter} />
</a>
) : (
<Avatar size={40} />
)}
</div>
<div className="thread-user-card-body">
<div className="thread-user-card-header">
{thread.starter ? (
<a
className="item-title"
href={thread.url.starter}
title={gettext("Thread author")}
>
{thread.starter.username}
</a>
) : (
<span className="item-title" title={gettext("Thread author")}>
{thread.starter_name}
</span>
)}
</div>
<div>
<span
className="text-muted"
title={interpolate(
gettext("Started on: %(timestamp)s"),
{
timestamp: thread.started_on.format("LLL"),
},
true
)}
>
{thread.started_on.fromNow()}
</span>
</div>
</div>
</div>
)

export default ThreadStarterCard
4 changes: 2 additions & 2 deletions frontend/src/components/ThreadsList/ThreadsListItem.jsx
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
import React from "react"
import ThreadFlags from "../ThreadFlags"
import ThreadReplies from "../ThreadReplies"
import ThreadsListItemActivity from "./ThreadsListItemActivity"
import ThreadsListItemCategory from "./ThreadsListItemCategory"
import ThreadsListItemCheckbox from "./ThreadsListItemCheckbox"
import ThreadsListItemIcon from "./ThreadsListItemIcon"
import ThreadsListItemLastPoster from "./ThreadsListItemLastPoster"
import ThreadsListItemReplies from "./ThreadsListItemReplies"
import ThreadsListItemSubscription from "./ThreadsListItemSubscription"

const ThreadsListItem = ({
Expand Down Expand Up @@ -93,7 +93,7 @@ const ThreadsListItem = ({
</div>
)}
<div className="threads-list-item-col-replies">
<ThreadsListItemReplies thread={thread} />
<ThreadReplies thread={thread} />
</div>
<div className="threads-list-item-col-last-poster">
<ThreadsListItemLastPoster thread={thread} />
Expand Down
2 changes: 1 addition & 1 deletion frontend/src/components/posts-list/post/controls/move.js
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,7 @@ export default class extends Form {
<div className="modal-footer">
<button
className="btn btn-primary"
loading={this.state.isLoading}
disabled={this.state.isLoading}
>
{gettext("Move post")}
</button>
Expand Down
44 changes: 27 additions & 17 deletions frontend/src/components/thread/ThreadHeader/ThreadHeader.jsx
Original file line number Diff line number Diff line change
@@ -1,12 +1,19 @@
import React from "react"
import Avatar from "../../avatar"
import { FlexRow, FlexRowCol, FlexRowSection } from "../../FlexRow"
import ThreadFlags from "../../ThreadFlags"
import { PageHeader, PageHeaderBanner, PageHeaderContainer, PageHeaderDetails } from "../../PageHeader"
import ThreadReplies from "../../ThreadReplies"
import ThreadStarterCard from "../../ThreadStarterCard"
import {
PageHeader,
PageHeaderBanner,
PageHeaderContainer,
PageHeaderDetails,
} from "../../PageHeader"
import ThreadModeration from "../ThreadModeration"
import ThreadSubscriptionButton from "../ThreadSubscriptionButton"
import ThreadHeaderBreadcrumbs from "./ThreadHeaderBreadcrumbs"

const ThreadHeader = ({ thread, user }) => (
const ThreadHeader = ({ thread, posts, user, moderation }) => (
<PageHeaderContainer>
<PageHeader>
<PageHeaderBanner>
Expand All @@ -17,19 +24,14 @@ const ThreadHeader = ({ thread, user }) => (
<FlexRow>
<FlexRowSection auto>
<FlexRowCol shrink>
{thread.starter ? (
<a href={thread.url.starter}>
<Avatar size={32} user={thread.starter} />
</a>
) : <Avatar size={32} />}
</FlexRowCol>
<FlexRowCol>
{thread.starter ? (
<a href={thread.url.starter}>
{thread.starter.username}
</a>
) : thread.starter_name}
<ThreadStarterCard thread={thread} />
</FlexRowCol>
<FlexRowCol auto />
{thread.replies > 0 && (
<FlexRowCol shrink>
<ThreadReplies thread={thread} />
</FlexRowCol>
)}
<FlexRowCol shrink>
<ThreadFlags thread={thread} />
</FlexRowCol>
Expand All @@ -39,7 +41,15 @@ const ThreadHeader = ({ thread, user }) => (
<FlexRowCol>
<ThreadSubscriptionButton thread={thread} />
</FlexRowCol>
<FlexRowCol shrink>[MOD]</FlexRowCol>
{moderation.enabled && (
<FlexRowCol shrink>
<ThreadModeration
thread={thread}
posts={posts}
moderation={moderation}
/>
</FlexRowCol>
)}
</FlexRowSection>
)}
</FlexRow>
Expand All @@ -48,4 +58,4 @@ const ThreadHeader = ({ thread, user }) => (
</PageHeaderContainer>
)

export default ThreadHeader
export default ThreadHeader
Original file line number Diff line number Diff line change
@@ -1,12 +1,20 @@
import React from "react"
import { Breadcrumbs, BreadcrumbsCategory, BreadcrumbsRootCategory } from "../../Breadcrumbs"
import {
Breadcrumbs,
BreadcrumbsCategory,
BreadcrumbsRootCategory,
} from "../../Breadcrumbs"

const ThreadHeaderBreadcrumbs = ({ breadcrumbs }) => (
<Breadcrumbs>
{breadcrumbs.map(category => (
category.special_role ? <BreadcrumbsRootCategory key={category.id} category={category} /> : <BreadcrumbsCategory key={category.id} category={category} />
))}
{breadcrumbs.map((category) =>
category.special_role ? (
<BreadcrumbsRootCategory key={category.id} category={category} />
) : (
<BreadcrumbsCategory key={category.id} category={category} />
)
)}
</Breadcrumbs>
)

export default ThreadHeaderBreadcrumbs
export default ThreadHeaderBreadcrumbs
2 changes: 1 addition & 1 deletion frontend/src/components/thread/ThreadHeader/index.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
import ThreadHeader from "./ThreadHeader"

export default ThreadHeader
export default ThreadHeader
25 changes: 25 additions & 0 deletions frontend/src/components/thread/ThreadModeration.jsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
import React from "react"
import ThreadModerationOptions from "./moderation/thread"

const ThreadModeration = ({ thread, posts, moderation }) => (
<div className="dropdown">
<button
type="button"
className="btn btn-default btn-outline btn-icon dropdown-toggle"
title={gettext("Thread options")}
data-toggle="dropdown"
aria-haspopup="true"
aria-expanded="false"
disabled={thread.isBusy}
>
<span className="material-icon">settings</span>
</button>
<ThreadModerationOptions
thread={thread}
posts={posts}
moderation={moderation}
/>
</div>
)

export default ThreadModeration
35 changes: 0 additions & 35 deletions frontend/src/components/thread/header/breadcrumbs.js

This file was deleted.

0 comments on commit 1d7beb5

Please sign in to comment.