From 82e7dceddb29c8ba58b808373f63dc97f85732e4 Mon Sep 17 00:00:00 2001 From: fateme ramezanpour Date: Mon, 14 Oct 2024 16:23:48 +0200 Subject: [PATCH 1/2] add WebSite structured data fro site name to index.tsx --- frontend/pages/index.tsx | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/frontend/pages/index.tsx b/frontend/pages/index.tsx index e25b7df89..df9ceadef 100644 --- a/frontend/pages/index.tsx +++ b/frontend/pages/index.tsx @@ -1,6 +1,7 @@ import { Button } from "@mui/material"; import makeStyles from "@mui/styles/makeStyles"; import React, { useContext, useEffect, useRef, useState } from "react"; +import Head from "next/head"; import { IconButton } from "@mui/material"; import ArrowUpwardIcon from "@mui/icons-material/ArrowUpward"; import { apiRequest, getLocalePrefix } from "../public/lib/apiOperations"; @@ -149,8 +150,18 @@ export default function Index() { const scrollToTop = () => window.scrollTo({ top: 0, behavior: "smooth" }); + const schemaMarkup = { + "@context": "https://schema.org", + "@type": "WebSite", + name: "Climate Connect", + url: "https://climateconnect.earth/", + }; + return ( + + + Date: Thu, 17 Oct 2024 14:28:29 +0200 Subject: [PATCH 2/2] add canonical for projects && signin, resolve error for profiles --- frontend/pages/profiles/[profileUrl].tsx | 6 +++--- frontend/pages/projects/[projectId].tsx | 10 ++++++++-- frontend/pages/signin.tsx | 7 ++++++- frontend/src/components/layouts/LayoutWrapper.tsx | 2 ++ frontend/src/components/layouts/WideLayout.tsx | 3 +++ frontend/src/components/layouts/layout.tsx | 4 +++- 6 files changed, 25 insertions(+), 7 deletions(-) diff --git a/frontend/pages/profiles/[profileUrl].tsx b/frontend/pages/profiles/[profileUrl].tsx index b6640a52f..c46813ca2 100644 --- a/frontend/pages/profiles/[profileUrl].tsx +++ b/frontend/pages/profiles/[profileUrl].tsx @@ -47,10 +47,10 @@ export default function ProfilePage({ profile, projects, organizations, ideas, p {profile ? ( diff --git a/frontend/pages/projects/[projectId].tsx b/frontend/pages/projects/[projectId].tsx index 2e59c3d62..fd74224a5 100644 --- a/frontend/pages/projects/[projectId].tsx +++ b/frontend/pages/projects/[projectId].tsx @@ -2,7 +2,7 @@ import NextCookies from "next-cookies"; import React, { useContext, useEffect, useRef, useState } from "react"; import Cookies from "universal-cookie"; import ROLE_TYPES from "../../public/data/role_types"; -import { apiRequest } from "../../public/lib/apiOperations"; +import { apiRequest, getLocalePrefix } from "../../public/lib/apiOperations"; import { nullifyUndefinedValues } from "../../public/lib/profileOperations"; import getTexts from "../../public/texts/texts"; import UserContext from "../../src/components/context/UserContext"; @@ -70,6 +70,7 @@ const parseComments = (comments) => { export async function getServerSideProps(ctx) { const { auth_token } = NextCookies(ctx); const projectUrl = encodeURI(ctx.query.projectId); + const [ project, members, @@ -224,7 +225,7 @@ export default function ProjectPage({ description={project?.short_description} message={message?.message} messageType={message?.messageType} - title={project ? project.name : texts.project + " " + texts.not_found} + title={project ? project?.name : texts.project + " " + texts.not_found} subHeader={ !tinyScreen ? ( @@ -233,6 +234,11 @@ export default function ProjectPage({ ) } image={project ? getImageUrl(project.image) : undefined} + canonicalUrl={ + project.url_slug + ? `${process.env.BASE_URL + getLocalePrefix(locale)}/projects/${project?.url_slug}` + : "" + } > {project ? ( diff --git a/frontend/pages/signin.tsx b/frontend/pages/signin.tsx index 7bd1fe923..06337f6c2 100644 --- a/frontend/pages/signin.tsx +++ b/frontend/pages/signin.tsx @@ -96,7 +96,12 @@ export default function Signin() { }; return ( - +
+ {canonicalUrl && } {/* If theme is falsy, slience the MUI console.warning for having an undefined theme */} diff --git a/frontend/src/components/layouts/WideLayout.tsx b/frontend/src/components/layouts/WideLayout.tsx index 5a08713ee..169e141fd 100644 --- a/frontend/src/components/layouts/WideLayout.tsx +++ b/frontend/src/components/layouts/WideLayout.tsx @@ -64,6 +64,7 @@ type Props = { customFooterImage?: string; isLocationHub?: boolean; noHeader?: boolean; + canonicalUrl?: string; }; //Wrapper layout component for pages where the content takes the whole width of the screen export default function WideLayout({ @@ -94,6 +95,7 @@ export default function WideLayout({ hideDonationCampaign, customFooterImage, noHeader, + canonicalUrl, }: Props) { const classes = useStyles({ noSpaceBottom: noSpaceBottom, isStaticPage: isStaticPage }); const [alertOpen, setAlertOpen] = React.useState(true); @@ -127,6 +129,7 @@ export default function WideLayout({ useFloodStdFont={useFloodStdFont} theme={theme} image={image} + canonicalUrl={canonicalUrl} > {!noHeader && (
+
{} {isLoading ? (