Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,10 @@ import { useQuery } from '@tanstack/react-query';
import { Card, Text } from 'opub-ui';

import { GraphQLPublic } from '@/lib/api';
import { isCollaborativeSubdomainHost as isCollaborativeSubdomainHostname } from '@/lib/collaborativesRouting';
import {
getPlatformRootUrl,
isCollaborativeSubdomainHost as isCollaborativeSubdomainHostname,
} from '@/lib/collaborativesRouting';
import { formatDate, generateJsonLd } from '@/lib/utils';
import BreadCrumbs from '@/components/BreadCrumbs';
import { Icons } from '@/components/icons';
Expand Down Expand Up @@ -322,6 +325,12 @@ const CollaborativeDetailClient = () => {
},
});

const platformRootUrl = getPlatformRootUrl();
const organizationPublisherHref = (org: any) => {
const path = `/publishers/organization/${org.slug + '_' + org.id}`;
return platformRootUrl === '/' ? path : `${platformRootUrl}${path}`;
};

return (
<>
<JsonLd json={jsonLd} />
Expand Down Expand Up @@ -393,7 +402,7 @@ const CollaborativeDetailClient = () => {
{CollaborativeDetailsData?.collaborativeBySlug?.supportingOrganizations?.map(
(org: any) => (
<Link
href={`/publishers/organization/${org.slug + '_' + org.id}`}
href={organizationPublisherHref(org)}
key={org.id}
>
<div className=" rounded-4 bg-surfaceDefault p-4">
Expand All @@ -420,7 +429,7 @@ const CollaborativeDetailClient = () => {
{CollaborativeDetailsData?.collaborativeBySlug?.partnerOrganizations?.map(
(org: any) => (
<Link
href={`/publishers/organization/${org.slug + '_' + org.id}`}
href={organizationPublisherHref(org)}
key={org.id}
>
<div className=" rounded-4 bg-surfaceDefault p-4">
Expand Down
121 changes: 70 additions & 51 deletions app/[locale]/(user)/collaboratives/components/Metadata.tsx
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
import { useEffect, useState } from 'react';
import Image from 'next/image';
import Link from 'next/link';
import { Button, Icon, Text, Tooltip } from 'opub-ui';
import { useEffect, useState } from 'react';

import { Icons } from '@/components/icons';
import { getPlatformRootUrl } from '@/lib/collaborativesRouting';
import { formatDate, getWebsiteTitle } from '@/lib/utils';
import { Icons } from '@/components/icons';

const Metadata = ({ data, setOpen }: { data: any; setOpen?: any }) => {
const [platformTitle, setPlatformTitle] = useState<string | null>(null);
Expand Down Expand Up @@ -41,12 +42,16 @@ const Metadata = ({ data, setOpen }: { data: any; setOpen?: any }) => {
className="text-primaryBlue underline lg:text-white"
href={data.collaborativeBySlug.platformUrl}
>
<Text className="underline text-primaryBlue lg:text-white" variant="bodyLg">
<Text
className="text-primaryBlue underline lg:text-white"
variant="bodyLg"
>
{platformTitle?.trim() ? platformTitle : 'Visit Platform'}
</Text>
</Link>
),
tooltipContent: data.collaborativeBySlug.platformUrl === null ? 'N/A' : platformTitle,
tooltipContent:
data.collaborativeBySlug.platformUrl === null ? 'N/A' : platformTitle,
},
{
label: 'Last Updated',
Expand All @@ -58,17 +63,19 @@ const Metadata = ({ data, setOpen }: { data: any; setOpen?: any }) => {
value: (
<div className="flex flex-wrap gap-2">
{data.collaborativeBySlug.sectors.length > 0 ? (
data.collaborativeBySlug.sectors.map((sector: any, index: number) => (
<Tooltip content={sector.name} key={index}>
<Image
src={`/Sectors/${sector.name}.svg`}
alt={sector.name || ''}
width={52}
height={52}
className="bg-white"
/>
</Tooltip>
))
data.collaborativeBySlug.sectors.map(
(sector: any, index: number) => (
<Tooltip content={sector.name} key={index}>
<Image
src={`/Sectors/${sector.name}.svg`}
alt={sector.name || ''}
width={52}
height={52}
className="bg-white"
/>
</Tooltip>
)
)
) : (
<span>N/A</span> // Fallback if no sectors are available
)}
Expand All @@ -79,7 +86,8 @@ const Metadata = ({ data, setOpen }: { data: any; setOpen?: any }) => {
label: 'SDG Goals',
value: (
<div className="flex flex-wrap gap-2">
{data.collaborativeBySlug.sdgs && data.collaborativeBySlug.sdgs.length > 0 ? (
{data.collaborativeBySlug.sdgs &&
data.collaborativeBySlug.sdgs.length > 0 ? (
data.collaborativeBySlug.sdgs.map((sdg: any, index: number) => (
<Tooltip content={`${sdg.code} - ${sdg.name}`} key={index}>
<Image
Expand All @@ -98,12 +106,18 @@ const Metadata = ({ data, setOpen }: { data: any; setOpen?: any }) => {
),
},
];

// Use collaborative logo if available, otherwise use a default
const image = data.collaborativeBySlug?.logo?.path
? `${process.env.NEXT_PUBLIC_BACKEND_URL}/${data.collaborativeBySlug.logo.path.replace('/code/files/', '')}`
: '/org.png';

const platformRootUrl = getPlatformRootUrl();
const contributorHref = (contributor: any) => {
const path = `/publishers/${contributor.fullName + '_' + contributor.id}`;
return platformRootUrl === '/' ? path : `${platformRootUrl}${path}`;
};

return (
<div className="flex flex-col gap-10 px-7 py-10">
<div className=" flex items-center justify-between">
Expand All @@ -115,7 +129,9 @@ const Metadata = ({ data, setOpen }: { data: any; setOpen?: any }) => {
>
ABOUT THE COLLABORATIVE{' '}
</Text>
<Text variant="bodyLg" className="text-gray-900 lg:text-white">DETAILS</Text>
<Text variant="bodyLg" className="text-gray-900 lg:text-white">
DETAILS
</Text>
</div>
<div className="flex items-center justify-between">
{setOpen && (
Expand All @@ -125,7 +141,7 @@ const Metadata = ({ data, setOpen }: { data: any; setOpen?: any }) => {
)}
</div>
</div>
<div className="h-0.5 bg-baseGraySlateSolid9 w-full" ></div>
<div className="h-0.5 w-full bg-baseGraySlateSolid9"></div>
<div className=" flex flex-col gap-8">
<div className="hidden rounded-2 border-1 border-solid border-greyExtralight bg-white p-2 lg:block">
<Image
Expand All @@ -140,7 +156,7 @@ const Metadata = ({ data, setOpen }: { data: any; setOpen?: any }) => {
{metadata.map((item, index) => (
<div key={index} className="flex gap-2">
<Text
className="min-w-[120px] basis-1/4 uppercase text-gray-900 lg:text-white"
className="text-gray-900 min-w-[120px] basis-1/4 uppercase lg:text-white"
variant="bodyMd"
>
{item.label}
Expand All @@ -157,38 +173,41 @@ const Metadata = ({ data, setOpen }: { data: any; setOpen?: any }) => {
</div>
))}
{/* Contributors Section */}
{data.collaborativeBySlug.contributors && data.collaborativeBySlug.contributors.length > 0 && (
<div className="flex gap-2">
<Text
className="min-w-[120px] basis-1/4 uppercase text-gray-900 lg:text-white"
variant="bodyMd"
>
Contributors
</Text>
<div className="flex flex-wrap gap-2">
{data.collaborativeBySlug.contributors.map((contributor: any) => (
<Link
href={`/publishers/${contributor.fullName + '_' + contributor.id}`}
key={contributor.id}
>
<Tooltip content={contributor.fullName}>
<Image
alt={contributor.fullName}
width={40}
height={40}
className="rounded-full object-cover"
src={
contributor.profilePicture?.url
? `${process.env.NEXT_PUBLIC_BACKEND_URL}/${contributor.profilePicture?.url}`
: '/profile.png'
}
/>
</Tooltip>
</Link>
))}
{data.collaborativeBySlug.contributors &&
data.collaborativeBySlug.contributors.length > 0 && (
<div className="flex gap-2">
<Text
className="text-gray-900 min-w-[120px] basis-1/4 uppercase lg:text-white"
variant="bodyMd"
>
Contributors
</Text>
<div className="flex flex-wrap gap-2">
{data.collaborativeBySlug.contributors.map(
(contributor: any) => (
<Link
href={contributorHref(contributor)}
key={contributor.id}
>
<Tooltip content={contributor.fullName}>
<Image
alt={contributor.fullName}
width={40}
height={40}
className="rounded-full object-cover"
src={
contributor.profilePicture?.url
? `${process.env.NEXT_PUBLIC_BACKEND_URL}/${contributor.profilePicture?.url}`
: '/profile.png'
}
/>
</Tooltip>
</Link>
)
)}
</div>
</div>
</div>
)}
)}
</div>
</div>
</div>
Expand Down
Loading