Updated the code to allow for images
This commit is contained in:
@@ -3,7 +3,7 @@ import About from "@/templates/About";
|
|||||||
import AboutPage from "@/types/cms/about";
|
import AboutPage from "@/types/cms/about";
|
||||||
|
|
||||||
export default async function Page() {
|
export default async function Page() {
|
||||||
const {data} = await getData<AboutPage>("about", "en");
|
const data = await getData<AboutPage>("about", "en");
|
||||||
|
|
||||||
return <About data={data.data.attributes} language="en" />;
|
return <About data={data} language="en" />;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ import About from "@/templates/About";
|
|||||||
import AboutPage from "@/types/cms/about";
|
import AboutPage from "@/types/cms/about";
|
||||||
|
|
||||||
export default async function Page() {
|
export default async function Page() {
|
||||||
const {data} = await getData<AboutPage>("about", "ar");
|
const data = await getData<AboutPage>("about", "ar");
|
||||||
|
|
||||||
return <About data={data.data.attributes} language="ar" />;
|
return <About data={data} language="ar" />;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,12 +5,12 @@ import ContactUs from "@/templates/ContactUs";
|
|||||||
import ContactPage from "@/types/cms/contact";
|
import ContactPage from "@/types/cms/contact";
|
||||||
|
|
||||||
export default async function Page() {
|
export default async function Page() {
|
||||||
const {data} = await getData<ContactPage>("contact", "ar");
|
const data = await getData<ContactPage>("contact", "ar");
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<main className="text-mti-black flex h-screen w-full flex-col bg-white" dir="rtl">
|
<main className="text-mti-black flex h-screen w-full flex-col bg-white" dir="rtl">
|
||||||
<Navbar currentPage="/contact" language="ar" />
|
<Navbar currentPage="/contact" language="ar" />
|
||||||
<ContactUs data={data.data.attributes} />;
|
<ContactUs data={data} />;
|
||||||
<Footer language="ar" />
|
<Footer language="ar" />
|
||||||
</main>
|
</main>
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ export async function generateStaticParams() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export default async function Page({params: {country}}: PageProps) {
|
export default async function Page({params: {country}}: PageProps) {
|
||||||
const {data} = await getData<CountryManagerContactsPage>("country-managers-contact", language);
|
const data = await getData<CountryManagerContactsPage>("country-managers-contact", language);
|
||||||
|
|
||||||
return <AgentContacts data={data.data.attributes} country={country} page={`/contacts/${country}`} language={language} />;
|
return <AgentContacts data={data} country={country} page={`/contacts/${country}`} language={language} />;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ import History from "@/templates/History";
|
|||||||
import HistoryPage from "@/types/cms/history";
|
import HistoryPage from "@/types/cms/history";
|
||||||
|
|
||||||
export default async function Page() {
|
export default async function Page() {
|
||||||
const {data} = await getData<HistoryPage>("history", "ar");
|
const data = await getData<HistoryPage>("history", "ar");
|
||||||
|
|
||||||
return <History data={data.data.attributes} language="ar" />;
|
return <History data={data} language="ar" />;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,10 +1,15 @@
|
|||||||
import {getData} from "@/cms";
|
import {getData} from "@/cms";
|
||||||
import Home from "@/templates/Home";
|
import Home from "@/templates/Home";
|
||||||
import HomePage from "@/types/cms/home";
|
import HomePage, {HomePageData} from "@/types/cms/home";
|
||||||
import {NextPageContext} from "next";
|
import {NextPageContext} from "next";
|
||||||
|
|
||||||
export default async function Page() {
|
export default async function Page() {
|
||||||
const {data} = await getData<HomePage>("home", "ar");
|
const data = await getData<HomePageData>("home", "ar");
|
||||||
|
|
||||||
return <Home data={data.data.attributes} language="ar" />;
|
const home: HomePage = {
|
||||||
|
...data,
|
||||||
|
Banner: data?.Banner?.data?.attributes,
|
||||||
|
};
|
||||||
|
|
||||||
|
return <Home data={home} language="ar" />;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,12 +5,12 @@ import Price from "@/templates/Price";
|
|||||||
import PricePage from "@/types/cms/price";
|
import PricePage from "@/types/cms/price";
|
||||||
|
|
||||||
export default async function Page() {
|
export default async function Page() {
|
||||||
const {data} = await getData<PricePage>("price", "ar");
|
const data = await getData<PricePage>("price", "ar");
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<main className="h-screen w-full bg-white text-mti-black flex flex-col" dir="rtl">
|
<main className="h-screen w-full bg-white text-mti-black flex flex-col" dir="rtl">
|
||||||
<Navbar currentPage="/price" language="ar" />
|
<Navbar currentPage="/price" language="ar" />
|
||||||
<Price data={data.data.attributes} language="ar" />
|
<Price data={data} language="ar" />
|
||||||
<Footer language="ar" />
|
<Footer language="ar" />
|
||||||
</main>
|
</main>
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ import Terms from "@/templates/Terms";
|
|||||||
import PrivacyPolicyPage from "@/types/cms/privacyPolicy";
|
import PrivacyPolicyPage from "@/types/cms/privacyPolicy";
|
||||||
|
|
||||||
export default async function Page() {
|
export default async function Page() {
|
||||||
const {data} = await getData<PrivacyPolicyPage>("privacy-policy", "ar");
|
const data = await getData<PrivacyPolicyPage>("privacy-policy", "ar");
|
||||||
|
|
||||||
return <Privacy data={data.data.attributes} language="ar" />;
|
return <Privacy data={data} language="ar" />;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ import Services from "@/templates/Services";
|
|||||||
import ServicesPage from "@/types/cms/services";
|
import ServicesPage from "@/types/cms/services";
|
||||||
|
|
||||||
export default async function Page() {
|
export default async function Page() {
|
||||||
const {data} = await getData<ServicesPage>("services", "ar");
|
const data = await getData<ServicesPage>("services", "ar");
|
||||||
|
|
||||||
return <Services data={data.data.attributes} language="ar" />;
|
return <Services data={data} language="ar" />;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ import Terms from "@/templates/Terms";
|
|||||||
import TermsAndConditionsPage from "@/types/cms/termsConditions";
|
import TermsAndConditionsPage from "@/types/cms/termsConditions";
|
||||||
|
|
||||||
export default async function Page() {
|
export default async function Page() {
|
||||||
const {data} = await getData<TermsAndConditionsPage>("terms-and-conditions", "ar");
|
const data = await getData<TermsAndConditionsPage>("terms-and-conditions", "ar");
|
||||||
|
|
||||||
return <Terms data={data.data.attributes} language="ar" />;
|
return <Terms data={data} language="ar" />;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,12 +5,12 @@ import ContactUs from "@/templates/ContactUs";
|
|||||||
import ContactPage from "@/types/cms/contact";
|
import ContactPage from "@/types/cms/contact";
|
||||||
|
|
||||||
export default async function Page() {
|
export default async function Page() {
|
||||||
const {data} = await getData<ContactPage>("contact", "en");
|
const data = await getData<ContactPage>("contact", "en");
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<main className="text-mti-black flex h-screen w-full flex-col bg-white" dir="ltr">
|
<main className="text-mti-black flex h-screen w-full flex-col bg-white" dir="ltr">
|
||||||
<Navbar currentPage="/contact" language="en" />
|
<Navbar currentPage="/contact" language="en" />
|
||||||
<ContactUs data={data.data.attributes} />;
|
<ContactUs data={data} />;
|
||||||
<Footer language="en" />
|
<Footer language="en" />
|
||||||
</main>
|
</main>
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ export async function generateStaticParams() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export default async function Page({params: {country}}: PageProps) {
|
export default async function Page({params: {country}}: PageProps) {
|
||||||
const {data} = await getData<CountryManagerContactsPage>("country-managers-contact", language);
|
const data = await getData<CountryManagerContactsPage>("country-managers-contact", language);
|
||||||
|
|
||||||
return <AgentContacts data={data.data.attributes} country={country} page={`/contacts/${country}`} language={language} />;
|
return <AgentContacts data={data} country={country} page={`/contacts/${country}`} language={language} />;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ import History from "@/templates/History";
|
|||||||
import HistoryPage from "@/types/cms/history";
|
import HistoryPage from "@/types/cms/history";
|
||||||
|
|
||||||
export default async function Page() {
|
export default async function Page() {
|
||||||
const {data} = await getData<HistoryPage>("history", "en");
|
const data = await getData<HistoryPage>("history", "en");
|
||||||
|
|
||||||
return <History data={data.data.attributes} language="en" />;
|
return <History data={data} language="en" />;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,10 +1,15 @@
|
|||||||
import {getData} from "@/cms";
|
import {getData} from "@/cms";
|
||||||
import Home from "@/templates/Home";
|
import Home from "@/templates/Home";
|
||||||
import HomePage from "@/types/cms/home";
|
import HomePage, {HomePageData} from "@/types/cms/home";
|
||||||
import {NextPageContext} from "next";
|
import {NextPageContext} from "next";
|
||||||
|
|
||||||
export default async function Page() {
|
export default async function Page() {
|
||||||
const {data} = await getData<HomePage>("home", "en");
|
const data = await getData<HomePageData>("home", "en");
|
||||||
|
|
||||||
return <Home data={data.data.attributes} language="en" />;
|
const home: HomePage = {
|
||||||
|
...data,
|
||||||
|
Banner: data?.Banner?.data?.attributes,
|
||||||
|
};
|
||||||
|
|
||||||
|
return <Home data={home} language="en" />;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,12 +5,12 @@ import Price from "@/templates/Price";
|
|||||||
import PricePage from "@/types/cms/price";
|
import PricePage from "@/types/cms/price";
|
||||||
|
|
||||||
export default async function Page() {
|
export default async function Page() {
|
||||||
const {data} = await getData<PricePage>("price", "en");
|
const data = await getData<PricePage>("price", "en");
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<main className="h-screen w-full bg-white text-mti-black flex flex-col" dir="ltr">
|
<main className="h-screen w-full bg-white text-mti-black flex flex-col" dir="ltr">
|
||||||
<Navbar currentPage="/price" language="en" />
|
<Navbar currentPage="/price" language="en" />
|
||||||
<Price data={data.data.attributes} language="en" />
|
<Price data={data} language="en" />
|
||||||
<Footer language="en" />
|
<Footer language="en" />
|
||||||
</main>
|
</main>
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ import Terms from "@/templates/Terms";
|
|||||||
import PrivacyPolicyPage from "@/types/cms/privacyPolicy";
|
import PrivacyPolicyPage from "@/types/cms/privacyPolicy";
|
||||||
|
|
||||||
export default async function Page() {
|
export default async function Page() {
|
||||||
const {data} = await getData<PrivacyPolicyPage>("privacy-policy", "en");
|
const data = await getData<PrivacyPolicyPage>("privacy-policy", "en");
|
||||||
|
|
||||||
return <Privacy data={data.data.attributes} language="en" />;
|
return <Privacy data={data} language="en" />;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ import Services from "@/templates/Services";
|
|||||||
import ServicesPage from "@/types/cms/services";
|
import ServicesPage from "@/types/cms/services";
|
||||||
|
|
||||||
export default async function Page() {
|
export default async function Page() {
|
||||||
const {data} = await getData<ServicesPage>("services", "en");
|
const data = await getData<ServicesPage>("services", "en");
|
||||||
|
|
||||||
return <Services data={data.data.attributes} language="en" />;
|
return <Services data={data} language="en" />;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ import Terms from "@/templates/Terms";
|
|||||||
import TermsAndConditionsPage from "@/types/cms/termsConditions";
|
import TermsAndConditionsPage from "@/types/cms/termsConditions";
|
||||||
|
|
||||||
export default async function Page() {
|
export default async function Page() {
|
||||||
const {data} = await getData<TermsAndConditionsPage>("terms-and-conditions", "en");
|
const data = await getData<TermsAndConditionsPage>("terms-and-conditions", "en");
|
||||||
|
|
||||||
return <Terms data={data.data.attributes} language="en" />;
|
return <Terms data={data} language="en" />;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -13,11 +13,10 @@ interface StrapiResponse<T> {
|
|||||||
meta: object;
|
meta: object;
|
||||||
}
|
}
|
||||||
|
|
||||||
type Result<T> = {data: StrapiResponse<T>; isError: boolean};
|
export async function getData<T>(page: string, locale: "ar" | "en"): Promise<T> {
|
||||||
|
|
||||||
export async function getData<T>(page: string, locale: "ar" | "en"): Promise<Result<T>> {
|
|
||||||
const request = await axios.get<StrapiResponse<T>>(`${process.env.STRAPI_URL}/api/${page}/?populate=deep&locale=${locale}`, {
|
const request = await axios.get<StrapiResponse<T>>(`${process.env.STRAPI_URL}/api/${page}/?populate=deep&locale=${locale}`, {
|
||||||
headers: {Authorization: `Bearer ${process.env.STRAPI_TOKEN}`},
|
headers: {Authorization: `Bearer ${process.env.STRAPI_TOKEN}`},
|
||||||
});
|
});
|
||||||
return {data: request.data, isError: request.status !== 200};
|
|
||||||
|
return request.data.data.attributes;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ interface Props {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export default async function FooterContainer({language}: Props) {
|
export default async function FooterContainer({language}: Props) {
|
||||||
const {data} = await getData<FooterSection>("footer", language);
|
const data = await getData<FooterSection>("footer", language);
|
||||||
|
|
||||||
return <Footer data={data.data.attributes} language={language} />;
|
return <Footer data={data} language={language} />;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ interface Props {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export default async function NavbarContainer({currentPage, language}: Props) {
|
export default async function NavbarContainer({currentPage, language}: Props) {
|
||||||
const {data} = await getData<NavBarSection>("nav-bar", language);
|
const data = await getData<NavBarSection>("nav-bar", language);
|
||||||
|
|
||||||
return <Navbar data={data.data.attributes} language={language} currentPage={currentPage} />;
|
return <Navbar data={data} language={language} currentPage={currentPage} />;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -22,7 +22,11 @@ export default function Home({language, data}: Props) {
|
|||||||
<Navbar currentPage="/" language={language} />
|
<Navbar currentPage="/" language={language} />
|
||||||
|
|
||||||
<section className="w-full relative bg-white">
|
<section className="w-full relative bg-white">
|
||||||
<img src="/banner_encoach_home.png" alt="IELTS Packages - Together we prepare for the future" className="w-full" />
|
<img
|
||||||
|
src={data.Banner?.url || "/banner_encoach_home.png"}
|
||||||
|
alt={data.Banner?.alternativeText ?? "IELTS Packages - Together we prepare for the future"}
|
||||||
|
className="w-full"
|
||||||
|
/>
|
||||||
<Link href={language === "ar" ? "/ar/price" : "/price"}>
|
<Link href={language === "ar" ? "/ar/price" : "/price"}>
|
||||||
<button className="absolute bottom-1/12 -lg:hidden left-1/12 bg-mti-purple-light hover:bg-mti-purple text-white rounded-xl px-8 py-4 transition ease-in-out duration-300 shadow">
|
<button className="absolute bottom-1/12 -lg:hidden left-1/12 bg-mti-purple-light hover:bg-mti-purple text-white rounded-xl px-8 py-4 transition ease-in-out duration-300 shadow">
|
||||||
{data.GetStartedButton}
|
{data.GetStartedButton}
|
||||||
|
|||||||
@@ -13,3 +13,24 @@ export type TitleWithTagAndText = TagTitle & TitleWithText;
|
|||||||
export interface TitleWithTextAndList extends TitleWithText {
|
export interface TitleWithTextAndList extends TitleWithText {
|
||||||
List: string;
|
List: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export interface ImageData {
|
||||||
|
data: {
|
||||||
|
id: number;
|
||||||
|
attributes: Image;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface Image {
|
||||||
|
name: string;
|
||||||
|
alternativeText: string | null;
|
||||||
|
caption: string | null;
|
||||||
|
width: number;
|
||||||
|
height: number;
|
||||||
|
hash: string;
|
||||||
|
ext: string;
|
||||||
|
mime: string;
|
||||||
|
size: number;
|
||||||
|
url: string;
|
||||||
|
previewUrl: string | null;
|
||||||
|
}
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import {TagTitle, TitleWithTagAndText, TitleWithText} from "./common";
|
import {TagTitle, TitleWithTagAndText, TitleWithText, ImageData, Image} from "./common";
|
||||||
|
|
||||||
export default interface HomePage {
|
interface Base {
|
||||||
GetStartedButton: string;
|
GetStartedButton: string;
|
||||||
Modules: Modules;
|
Modules: Modules;
|
||||||
LearnAI: TitleWithTagAndText;
|
LearnAI: TitleWithTagAndText;
|
||||||
@@ -12,6 +12,14 @@ export default interface HomePage {
|
|||||||
Accreditation: string;
|
Accreditation: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export default interface HomePage extends Base {
|
||||||
|
Banner: Image;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface HomePageData extends Base {
|
||||||
|
Banner: ImageData;
|
||||||
|
}
|
||||||
|
|
||||||
interface Modules {
|
interface Modules {
|
||||||
Reading: TitleWithText;
|
Reading: TitleWithText;
|
||||||
Listening: TitleWithText;
|
Listening: TitleWithText;
|
||||||
|
|||||||
Reference in New Issue
Block a user