From 8156a97f836e4206ced6f66dc75b1da900ab4ad3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1s=20Castillo?= Date: Tue, 4 Nov 2025 00:17:06 -0300 Subject: [PATCH 1/2] feature: openinfra days page data on CMS MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Tomás Castillo --- src/cms/cms.js | 4 +- .../OpenInfraDaysPagePreview.js | 55 ++++++++ src/components/MoreEventsSection/index.jsx | 28 +--- .../OpeninfraDays/OpeninfraDaysCard/index.jsx | 2 +- src/components/OpeninfraDaysAgenda/index.jsx | 30 ++-- src/pages/days/index.md | 129 +++++++++++++++++- src/templates/open-infra-days-page.js | 60 +++++++- static/admin/config.yml | 66 ++++++++- 8 files changed, 324 insertions(+), 50 deletions(-) create mode 100644 src/cms/preview-templates/OpenInfraDaysPagePreview.js diff --git a/src/cms/cms.js b/src/cms/cms.js index b012d9a50..0f962b05c 100644 --- a/src/cms/cms.js +++ b/src/cms/cms.js @@ -26,6 +26,7 @@ import ContributorsPagePreview from './preview-templates/ContributorsPagePreview import AnnualReportPagePreview from './preview-templates/AnnualReportPagePreview' import ProjectsContactPagePreview from './preview-templates/ProjectsContactPagePreview' import SummitLandingPagePreview from './preview-templates/SummitLandingPagePreview' +import OpenInfraDaysPagePreview from './preview-templates/OpenInfraDaysPagePreview' CMS.registerPreviewStyle('style/styles.scss'); CMS.registerPreviewStyle('style/previews.css'); @@ -56,4 +57,5 @@ CMS.registerPreviewTemplate('electionPage', ElectionPagePreview) CMS.registerPreviewTemplate('contributors-pages', ContributorsPagePreview) CMS.registerPreviewTemplate('annual-report-pages', AnnualReportPagePreview) CMS.registerPreviewTemplate('projects-contact', ProjectsContactPagePreview) -CMS.registerPreviewTemplate('summit-landing-page', SummitLandingPagePreview); \ No newline at end of file +CMS.registerPreviewTemplate('summit-landing-page', SummitLandingPagePreview); +CMS.registerPreviewTemplate('openinfra-days', OpenInfraDaysPagePreview) diff --git a/src/cms/preview-templates/OpenInfraDaysPagePreview.js b/src/cms/preview-templates/OpenInfraDaysPagePreview.js new file mode 100644 index 000000000..4ad9996ed --- /dev/null +++ b/src/cms/preview-templates/OpenInfraDaysPagePreview.js @@ -0,0 +1,55 @@ +import React from 'react' +import PropTypes from 'prop-types' +import { OpenInfraDaysPageTemplate } from '../../templates/open-infra-days-page' + +const OpenInfraDaysPagePreview = ({ entry, widgetFor }) => { + const data = entry.getIn(['data']).toJS() + + const entryUpcomingDaysEvents = entry.getIn(['data', 'upcomingDaysEvents', 'events']) + const upcomingDaysEvents = entryUpcomingDaysEvents ? entryUpcomingDaysEvents.toJS() : [] + + const entryUpcomingMeetups = entry.getIn(['data', 'upcomingMeetups']) + const upcomingMeetups = entryUpcomingMeetups ? entryUpcomingMeetups.toJS() : [] + + const entryPastMeetups = entry.getIn(['data', 'pastMeetups']) + const pastMeetups = entryPastMeetups ? entryPastMeetups.toJS() : [] + + const entryCommunityEvents = entry.getIn(['data', 'communityEvents', 'events']) + const communityEvents = entryCommunityEvents ? entryCommunityEvents.toJS() : [] + + const entryUpcomingSummits = entry.getIn(['data', 'upcomingSummits']) + const upcomingSummits = entryUpcomingSummits ? entryUpcomingSummits.toJS() : [] + + if (data) { + return ( + + ) + } else { + return
Loading...
+ } +} + +OpenInfraDaysPagePreview.propTypes = { + entry: PropTypes.shape({ + getIn: PropTypes.func, + }), + getAsset: PropTypes.func, + widgetFor: PropTypes.func, +} + +export default OpenInfraDaysPagePreview \ No newline at end of file diff --git a/src/components/MoreEventsSection/index.jsx b/src/components/MoreEventsSection/index.jsx index dd0f4897b..5310deff6 100644 --- a/src/components/MoreEventsSection/index.jsx +++ b/src/components/MoreEventsSection/index.jsx @@ -9,39 +9,21 @@ const COLORS = [ "#28a4db" ]; -const EVENTS = [ - {name: "OpenStack 15th Birthday Celebrations!", link: "https://www.openstack.org/blog/celebrating-15-years-of-openstack/", date: "All Year Long", location: "All Around the Globe"}, - {name: "KubeCon + CloudNativeCon China", link: "https://events.linuxfoundation.org/kubecon-cloudnativecon-china/", date: "June 10-11, 2025", location: "Hong Kong"}, - {name: "Open Telco Cloud Summit", link: "https://open.telcocloud-summit.com/event/585d8b6f-6494-4698-bb78-840206d3d3fa/summary?rt=svQDGBmL7k24CyoTCtWc2Q", date: "June 12, 2025", location: "Virtual"}, - {name: "KubeCon + CloudNativeCon Japan", link: "https://events.linuxfoundation.org/kubecon-cloudnativecon-japan/", date: "June 16-17, 2025", location: "Tokyo, JP"}, - {name: "Open Source Summit NA", link: "https://events.linuxfoundation.org/open-source-summit-north-america/ ", date: "June 23-25, 2025", location: "Denver, CO"}, - {name: "OpenInfra Day Vietnam", link: "https://www.vietopeninfra.org/void2025 ", date: "June 28, 2025", location: "Ho Chi Minh, VN "}, - {name: "OpenInfra Day Korea", link: "https://2025.openinfradays.kr/", date: "August 26, 2025", location: "Seoul, KR"}, - {name: "Cloud Operator Days Tokyo", link: "https://cloudopsdays.com/", date: "July 3 - September 5, 2025", location: "Tokyo, JP"}, - {name: "OpenInfra Days Indonesia", link: "https://www.linkedin.com/posts/openinfraid_openinfra-oid2025-openinfraid-ugcPost-7319909725951643648-UeNl/?utm_source=share&utm_medium=member_desktop&rcm=ACoAACkFmC4BAjY_ZaQQLbuPSV1vjFRU6hVE5Pk", date: "July 19, 2025", location: "Yogyakarta, ID"}, - {name: "OpenInfra User Group Colombia at KCD", link: "https://www.meetup.com/colombia-openinfra-user-group/events/307096751/", date: "August 29, 2025", location: "Bogotá, CO"}, - {name: "OpenInfra Summit Europe 2025", link: "https://summit2025.openinfra.org/", date: "October 17-19, 2025", location: "Paris-Saclay, FR"}, - {name: "PyTorch Conference 2025", link: "https://events.linuxfoundation.org/pytorch-conference/?__hstc=132719121.0b101d54206edc20977df92c2e1046c4.1742517488370.1742517488370.1742517488370.1&__hssc=132719121.2.1742517488370&__hsfp=1219773955", date: "October 22-23, 2025", location: "San Francisco, CA"}, - {name: "KubeCon EU + CloudNativeCon NA", link: "https://events.linuxfoundation.org/kubecon-cloudnativecon-north-america/", date: "November 10-13", location: "Atlanta, GA"}, -]; - -const MoreEventsSection = () => { +const MoreEventsSection = ({ title, events }) => { return (
-

- More Open Source Community Events -

+

- {EVENTS.map((event, idx) => ( -
+ {events.map((event, idx) => ( +
{event.link ? <> {event.name} : - event.name} + event.name}
date diff --git a/src/components/OpeninfraDays/OpeninfraDaysCard/index.jsx b/src/components/OpeninfraDays/OpeninfraDaysCard/index.jsx index 288b253a2..ced7cccec 100644 --- a/src/components/OpeninfraDays/OpeninfraDaysCard/index.jsx +++ b/src/components/OpeninfraDays/OpeninfraDaysCard/index.jsx @@ -12,7 +12,7 @@ const OpenInfraDaysCard = ({background, name, date, location, coming_soon, link return (
-
+
{name && <> diff --git a/src/components/OpeninfraDaysAgenda/index.jsx b/src/components/OpeninfraDaysAgenda/index.jsx index a3bb58581..0a41a5dbe 100644 --- a/src/components/OpeninfraDaysAgenda/index.jsx +++ b/src/components/OpeninfraDaysAgenda/index.jsx @@ -1,51 +1,49 @@ import React from 'react' -import {StaticImage} from "gatsby-plugin-image"; +import { StaticImage } from "gatsby-plugin-image"; import './styles.scss'; import RoundedButton from '../RoundedButton'; -const OpeninfraDaysAgenda = ({title = "", items, learnMoreLink}) => { +const OpeninfraDaysAgenda = ({ title = "", items, learnMoreLink }) => { return (
-

- {title} -

+

+ alt="asia-days" />
{items.map(day => (
-

{day.title}

+

{day.date &&

- date + date {day.date}

} {day.location &&

- location - + location +

} {day.registration &&

- registration - + registration +

} {day.sponsor &&

- sponsor - + sponsor +

} {day.coming_soon &&

- soon + soon More info coming soon

} @@ -54,7 +52,7 @@ const OpeninfraDaysAgenda = ({title = "", items, learnMoreLink}) => {

{learnMoreLink && - + }

diff --git a/src/pages/days/index.md b/src/pages/days/index.md index 99ad68719..e608cbf6d 100644 --- a/src/pages/days/index.md +++ b/src/pages/days/index.md @@ -4,10 +4,131 @@ seo: description: >- A special event close to your city image: /img/OpenInfra-icon-white.jpg - title: 'OpenInfra Days' - twitterUsername: '@OpenInfraDev' - url: 'https://openinfra.dev/days' + title: "OpenInfra Days" + twitterUsername: "@OpenInfraDev" + url: "https://openinfra.dev/days" title: OpenInfra Days subTitle: by the community, for the community +upcomingDaysEvents: + title: | + Upcoming
Openinfra Days + events: + - title: | + OpenInfra Days Vietnam + date: "July 26, 2025" + location: "Hanoi, VN" + registration: | + The CFP closes June 15 + sponsor: | + Sponsor this event + - title: | + OpenInfra Days Indonesia + date: "July 19, 2025" + location: "Yogyakarta, ID" + registration: | + The CFP closes June 27 + sponsor: | + Sponsor this event + - title: | + OpenInfra Days Korea + date: "August 26th, 2025" + location: "Seoul, KR" + registration: | + The CFP closes June 15 + sponsor: | + Sponsor this event + - title: | + OpenInfra Days China + date: "November 15, 2025" + location: "Hangzhou, CN" + registration: | + 'The CFP closes September 21' + - title: | + Cloud Operator Days Tokyo + date: "July 2025 (Online Sessions Available), Sept 5, 2025 (Closing Ceremony)" + location: "Tokyo, JP" + registration: | + The CFP closes April 30 + sponsor: | + Sponsor this event +upcomingMeetups: + - background: /img/openinfra-days/openinfra-days-cards/kenya_3.svg + date: "September 6, 2025" + location: "Nairobi, Kenya" + link: "https://www.meetup.com/kenya-openinfra-user-group/" +pastMeetups: + - background: /img/openinfra-days/openinfra-days-cards/sweden-meetup.svg + date: "May 22, 2025" + location: "Stockholm, Sweden" + link: "https://www.meetup.com/openinfra-user-group-sweden/events/306139678/" + - background: /img/openinfra-days/openinfra-days-cards/oid-pasadena.png + name: "North America" + date: "March 6 & 7, 2025" + location: "Pasadena, California" + link: "https://www.youtube.com/live/W9OmGdtJAAE?si=OO_WjYr7A6ktAv5A" +communityEvents: + title: "More Open Source Community Events" + events: + - name: "OpenStack 15th Birthday Celebrations!" + link: "https://www.openstack.org/blog/celebrating-15-years-of-openstack/" + date: "All Year Long" + location: "All Around the Globe" + - name: "KubeCon + CloudNativeCon China" + link: "https://events.linuxfoundation.org/kubecon-cloudnativecon-china/" + date: "June 10-11, 2025" + location: "Hong Kong" + - name: "Open Telco Cloud Summit" + link: "https://open.telcocloud-summit.com/event/585d8b6f-6494-4698-bb78-840206d3d3fa/summary?rt=svQDGBmL7k24CyoTCtWc2Q" + date: "June 12, 2025" + location: "Virtual" + - name: "KubeCon + CloudNativeCon Japan" + link: "https://events.linuxfoundation.org/kubecon-cloudnativecon-japan/" + date: "June 16-17, 2025" + location: "Tokyo, JP" + - name: "Open Source Summit NA" + link: "https://events.linuxfoundation.org/open-source-summit-north-america/ " + date: "June 23-25, 2025" + location: "Denver, CO" + - name: "OpenInfra Day Vietnam" + link: "https://www.vietopeninfra.org/void2025 " + date: "June 28, 2025" + location: "Ho Chi Minh, VN " + - name: "OpenInfra Day Korea" + link: "https://2025.openinfradays.kr/" + date: "August 26, 2025" + location: "Seoul, KR" + - name: "Cloud Operator Days Tokyo" + link: "https://cloudopsdays.com/" + date: "July 3 - September 5, 2025" + location: "Tokyo, JP" + - name: "OpenInfra Days Indonesia" + link: "https://www.linkedin.com/posts/openinfraid_openinfra-oid2025-openinfraid-ugcPost-7319909725951643648-UeNl/?utm_source=share&utm_medium=member_desktop&rcm=ACoAACkFmC4BAjY_ZaQQLbuPSV1vjFRU6hVE5Pk" + date: "July 19, 2025" + location: "Yogyakarta, ID" + - name: "OpenInfra User Group Colombia at KCD" + link: "https://www.meetup.com/colombia-openinfra-user-group/events/307096751/" + date: "August 29, 2025" + location: "Bogotá, CO" + - name: "OpenInfra Summit Europe 2025" + link: "https://summit2025.openinfra.org/" + date: "October 17-19, 2025" + location: "Paris-Saclay, FR" + - name: "PyTorch Conference 2025" + link: "https://events.linuxfoundation.org/pytorch-conference/?__hstc=132719121.0b101d54206edc20977df92c2e1046c4.1742517488370.1742517488370.1742517488370.1&__hssc=132719121.2.1742517488370&__hsfp=1219773955" + date: "October 22-23, 2025" + location: "San Francisco, CA" + - name: "KubeCon EU + CloudNativeCon NA" + link: "https://events.linuxfoundation.org/kubecon-cloudnativecon-north-america/" + date: "November 10-13" + location: "Atlanta, GA" +upcomingSummits: + - key: "europe-25" + background: /img/summit-landing/cards/summit-europe-25-2.png + date: "October 17-19, 2025" + location: "École Polytechnique, Paris-Saclay, France" + notification: + text: " " + button: + link: "https://summit2025.openinfra.org" + text: "Learn More" --- - diff --git a/src/templates/open-infra-days-page.js b/src/templates/open-infra-days-page.js index e7c4c44d6..08734313a 100644 --- a/src/templates/open-infra-days-page.js +++ b/src/templates/open-infra-days-page.js @@ -79,8 +79,8 @@ export const OpenInfraDaysPageTemplate = ({ Upcoming
Openinfra Days} - items={upcomingItemsAsia} + title={upcomingDaysEvents.title} + items={upcomingDaysEvents.events} /> { subTitle={post.frontmatter.subTitle} contentComponent={HTMLContent} content={post.html} + upcomingDaysEvents={post.frontmatter.upcomingDaysEvents} + upcomingMeetups={post.frontmatter.upcomingMeetups} + pastMeetups={post.frontmatter.pastMeetups} + communityEvents={post.frontmatter.communityEvents} + upcomingSummits={post.frontmatter.upcomingSummits} isLoggedUser={isLoggedUser} /> @@ -164,6 +169,57 @@ export const OpenInfraDaysPageQuery = graphql` } title subTitle + upcomingDaysEvents { + title + events { + title + date + location + registration + sponsor + } + } + upcomingMeetups { + background { + publicURL + } + date + location + link + } + pastMeetups { + background { + publicURL + } + name + date + location + link + } + communityEvents { + title + events { + name + link + date + location + } + } + upcomingSummits { + key + background { + publicURL + } + date + location + notification { + text + button { + link + text + } + } + } } } } diff --git a/static/admin/config.yml b/static/admin/config.yml index e40bef654..86482b9b7 100644 --- a/static/admin/config.yml +++ b/static/admin/config.yml @@ -1,7 +1,5 @@ -local_backend: true - backend: - name: git-gateway + name: github repo: OpenStackweb/osf-website branch: master commit_messages: @@ -1393,3 +1391,65 @@ collections: { label: "Link", name: link, widget: string } ]} ]} + - name: "openinfra-days-page" + label: "OpenInfra Days Page" + files: + - file: "src/pages/days/index.md" + label: "OpenInfra Days" + name: "openinfra-days" + fields: + - { label: "Template Key", name: "templateKey", widget: "hidden", default: "open-infra-days-page" } + - { label: SEO, name: seo, widget: object, fields: [ + { label: "Title", name: "title", widget: string }, + { label: "Description", name: "description", widget: string }, + { label: "Url", name: "url", widget: string }, + { label: "Image", name: "image", widget: image }, + { label: "Twitter Username", name: "twitterUsername", widget: string }, + ]} + - { label: "Title", name: title, widget: string } + - { label: "Sub Title", name: subTitle, widget: string } + - { label: "Upcoming Days Events", name: upcomingDaysEvents, widget: object, fields: [ + { label: "Title", name: title, widget: text, hint: "You can use HTML tags like
" }, + { label: "Events", name: events, widget: list, fields: [ + { label: "Title", name: title, widget: text, hint: "You can use HTML tags like
" }, + { label: "Date", name: date, widget: string }, + { label: "Location", name: location, widget: string }, + { label: "Registration", name: registration, widget: text, hint: "You can use HTML tags like
" }, + { label: "Sponsor", name: sponsor, widget: text, hint: "You can use HTML tags like
", required: false }, + ]} + ]} + - { label: "Upcoming Meetups", name: upcomingMeetups, widget: list, fields: [ + { label: "Background", name: background, widget: image }, + { label: "Date", name: date, widget: string }, + { label: "Location", name: location, widget: string }, + { label: "Link", name: link, widget: string }, + ]} + - { label: "Past Meetups", name: pastMeetups, widget: list, fields: [ + { label: "Background", name: background, widget: image }, + { label: "Name", name: name, widget: string, required: false }, + { label: "Date", name: date, widget: string }, + { label: "Location", name: location, widget: string }, + { label: "Link", name: link, widget: string }, + ]} + - { label: "Community Events", name: communityEvents, widget: object, fields: [ + { label: "Title", name: title, widget: string }, + { label: "Events", name: events, widget: list, fields: [ + { label: "Name", name: name, widget: string }, + { label: "Link", name: link, widget: string }, + { label: "Date", name: date, widget: string }, + { label: "Location", name: location, widget: string }, + ]} + ]} + - { label: "Upcoming Summits", name: upcomingSummits, widget: list, fields: [ + { label: "Key", name: key, widget: "string" }, + { label: "Background", name: background, widget: "image" }, + { label: "Date", name: date, widget: "string" }, + { label: "Location", name: location, widget: "string" }, + { label: "Notification", name: notification, widget: "object", fields: [ + { label: "Text", name: text, widget: "string" }, + { label: "Button", name: button, widget: "object", fields: [ + { label: "Link", name: link, widget: "string" }, + { label: "Text", name: text, widget: "string" } + ]} + ]} + ]} From c8c889a2071eec01fb2ec48e8859150ea2045a00 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1s=20Castillo?= Date: Tue, 11 Nov 2025 10:40:47 -0300 Subject: [PATCH 2/2] adjust branch name on config cms file to test preview MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Tomás Castillo --- static/admin/config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/static/admin/config.yml b/static/admin/config.yml index 86482b9b7..a8be63ea1 100644 --- a/static/admin/config.yml +++ b/static/admin/config.yml @@ -1,7 +1,7 @@ backend: name: github repo: OpenStackweb/osf-website - branch: master + branch: feature/cms-openinfra-days commit_messages: create: 'Create {{collection}} “{{slug}}”' update: 'Update {{collection}} “{{slug}}”'