Skip to content

Commit 98d856a

Browse files
committed
[community] new page community
relates #74
1 parent 716ebec commit 98d856a

3 files changed

Lines changed: 230 additions & 7 deletions

File tree

‎src/components/Donate.astro‎

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
---
2+
import { Icon } from "astro-icon/components";
3+
---
4+
5+
<a
6+
class="btn btn-dark fw-bold w-md-auto"
7+
href="https://opencollective.com/gephi/donate?interval=oneTime&amount=5&name=&legalName=&email="
8+
><Icon name="ph:heart-fill" /> Donate 5€</a
9+
>

‎src/layouts/Layout.astro‎

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import "../styles/main.scss";
33
import { Image } from "astro:assets";
44
import { Icon } from "astro-icon/components";
55
import cx from "classnames";
6+
import Donate from "../components/Donate.astro";
67
78
interface Props {
89
class?: string;
@@ -13,6 +14,7 @@ const { class: className, pageId } = Astro.props;
1314
1415
const pages = [
1516
{ id: "about", href: "/about", title: "About" },
17+
{ id: "community", href: "/community", title: "Community" },
1618
{ id: "quickstart", href: "/quickstart", title: "Quickstart" },
1719
{ id: "faq", href: "/faq", title: "FAQ" },
1820
{ id: "blog", href: "https://gephi.wordpress.com", title: "Blog" },
@@ -24,9 +26,8 @@ const appPages = [
2426
{ id: "desktop", href: "/desktop", title: "Gephi" },
2527
{ id: "desktop-plugins", href: "/desktop/plugins", title: "Gephi plugins" },
2628
{ id: "lite", href: "/lite", title: "Gephi Lite" },
27-
// { id: "toolkit", href: "/toolkit", title: "Gephi Toolkit" },
2829
{ id: "gephisto", href: "https://jacomyma.github.io/gephisto", title: "Gephisto" },
29-
{ id: "gephi-toolkit", href: "/toolkit", title: "Gephi Toolkit" },
30+
{ id: "toolkit", href: "/toolkit", title: "Gephi Toolkit" },
3031
];
3132
---
3233

@@ -113,11 +114,7 @@ const appPages = [
113114
</details>
114115
</li>
115116
<li class="nav-item">
116-
<a
117-
class="btn btn-dark fw-bold w-100 w-md-auto"
118-
href="https://opencollective.com/gephi/donate?interval=oneTime&amount=5&name=&legalName=&email="
119-
><Icon name="ph:heart-fill" /> Donate 5€</a
120-
>
117+
<Donate />
121118
</li>
122119
</ul>
123120
</div>

‎src/pages/community/index.astro‎

Lines changed: 217 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,217 @@
1+
---
2+
import { Icon } from "astro-icon/components";
3+
4+
import Banner from "../../components/Banner.astro";
5+
import Layout from "../../layouts/Layout.astro";
6+
import Donate from "../../components/Donate.astro";
7+
8+
const GEPHI_WEEKS = [
9+
{
10+
year: 2026,
11+
place: "Prague, Czech Republic",
12+
sponsors: [{ label: "Charles University", url: "https://cuni.cz" }],
13+
},
14+
{
15+
year: 2025,
16+
place: "Nantes, France",
17+
url: "https://gephi.wordpress.com/2025/10/01/gephi-week-2025/",
18+
sponsors: [{ label: "Umanit", url: "https://www.umanit.fr/" }],
19+
},
20+
{
21+
year: 2024,
22+
place: "Copenhagen, Danemark",
23+
url: "https://gephi.wordpress.com/2024/06/13/gephi-week-2024-peek-from-the-inside/",
24+
sponsors: [{ label: "Aalborg University", url: "https://www.en.aau.dk/" }],
25+
},
26+
{
27+
year: 2022,
28+
place: "Paris, France",
29+
url: "https://gephi.wordpress.com/2024/06/13/gephi-week-2024-peek-from-the-inside/",
30+
sponsors: [
31+
{ label: "SoBigData", url: "http://www.sobigdata.eu/" },
32+
{ label: "Sciences Po médialab", url: "https://medialab.sciencespo.fr/" },
33+
],
34+
},
35+
{
36+
year: 2021,
37+
place: "Copenhagen, Danemark",
38+
url: "https://gephi.wordpress.com/2021/12/06/gephi-code-sustainability-retreat-2021-debriefing/",
39+
sponsors: [{ label: "TANTLAB", url: "https://www.dcc.aau.dk/research/research-groups/tantlab" }],
40+
},
41+
];
42+
---
43+
44+
<Layout pageId="community">
45+
<Banner>
46+
<h1>Gephi Community</h1>
47+
</Banner>
48+
49+
<main class="py-5">
50+
<section class="feature-container pb-5">
51+
<section class="feature feature-left feature-flat py-4" id="newsletter">
52+
<section class="feature-headline">
53+
<div class="feature-text">
54+
<h2>
55+
<Icon name="ph:envelope" class="text-primary" />
56+
<span>Newsletter</span>
57+
</h2>
58+
<p>
59+
To follow the important Gephi Community announcements you can subscribe to our newsletter. It's a
60+
low-frequency communication channel where you'll get noticed for new releases, call for feedbacks,
61+
events...
62+
</p>
63+
64+
<form id="newsletter-register-form" class="d-flex flex-column justify-content-end">
65+
<div class="d-flex gap-2">
66+
<label for="newsletter-email">Email</label>
67+
<div class="col-6">
68+
<input class="form-control" type="email" id="newsletter-email" placeholder="name@provider.tld" />
69+
</div>
70+
<button class="btn btn-primary">register</button>
71+
</div>
72+
<div id="newsletter-register-status" class="fs-6">status of the request</div>
73+
</form>
74+
<script>
75+
async function registerNewsletter(e: SubmitEvent) {
76+
e.stopPropagation();
77+
e.preventDefault();
78+
console.log("register email");
79+
const statusDiv = document.getElementById("newsletter-register-status");
80+
const emailInput = document.getElementById("newsletter-email") as HTMLInputElement | null;
81+
if (emailInput && emailInput.value !== "" && emailInput.checkValidity()) {
82+
const r = await fetch("https://rapid-night-bc5f.gephi.workers.dev", {
83+
method: "POST",
84+
body: JSON.stringify({ email: emailInput.value }),
85+
});
86+
87+
if (r.status === 201) {
88+
if (statusDiv) {
89+
statusDiv.classList.remove("text-danger");
90+
statusDiv.classList.add("text-success");
91+
statusDiv.setHTMLUnsafe(`Email ${emailInput.value} registered in Gephi Community newsletter`);
92+
}
93+
} else if (statusDiv) {
94+
statusDiv.classList.remove("text-success");
95+
statusDiv.classList.add("text-danger");
96+
statusDiv.setHTMLUnsafe(
97+
`Couldn't register email ${emailInput.value} to Gephi Community newsletter!`,
98+
);
99+
}
100+
} else {
101+
if (statusDiv) {
102+
statusDiv.classList.remove("text-success");
103+
statusDiv.classList.add("text-danger");
104+
statusDiv.setHTMLUnsafe(`Invalid email input`);
105+
}
106+
}
107+
}
108+
const form = document.getElementById("newsletter-register-form");
109+
if (form) form.addEventListener("submit", registerNewsletter);
110+
</script>
111+
</div>
112+
</section>
113+
</section>
114+
115+
<section class="feature feature-left feature-flat py-4" id="matrix">
116+
<section class="feature-headline">
117+
<div class="feature-text">
118+
<h2>
119+
<Icon name="ph:chat" class="text-primary" />
120+
<span>Community Channel</span>
121+
</h2>
122+
<p>
123+
Come discuss with the Gephi community in our <a href="https://matrix.to/#/!XKyOZNGdXvoRWJbPCL:matrix.org"
124+
>Matrix channel</a
125+
>. Users, newbies, plugin developers (etc) are all welcome in this discussion space to share ideas, issues
126+
or achievements.
127+
</p>
128+
</div>
129+
</section>
130+
</section>
131+
132+
<section class="feature feature-left feature-flat py-4" id="open-collective">
133+
<section class="feature-headline">
134+
<div class="feature-text">
135+
<h2>
136+
<Icon name="ph:bank" class="text-primary" />
137+
<span>Open Collective</span>
138+
</h2>
139+
<p>
140+
We have chosen Open Collective as our fiscal host to organize our projects financial supports. Feel free
141+
to visit <a href="https://opencollective.com/gephi">the Gephi Open Collective page</a>, to follow how we
142+
use donations to help maintainers designing, developing and delivering greater open source tools for your
143+
networks!
144+
</p>
145+
</div>
146+
</section>
147+
</section>
148+
149+
<section class="feature feature-left feature-flat py-4" id="donate">
150+
<section class="feature-headline">
151+
<div class="feature-text">
152+
<h2>
153+
<Icon name="ph:hand-heart" class="text-primary" />
154+
<span>Donate</span>
155+
</h2>
156+
<p>
157+
We accept donations! Thanks to our fiscal host, you can easily support Gephi community efforts through
158+
donations either punctual or recurrent.
159+
</p>
160+
<div class="mb-3 d-flex justify-content-center">
161+
<Donate />
162+
</div>
163+
<p>
164+
We also welcome sponsors for specific project such as our coding retreats "Gephi weeks". Get in touch
165+
through our matrix channel if you're interested.
166+
</p>
167+
</div>
168+
</section>
169+
</section>
170+
171+
<section class="feature feature-left feature-flat py-4" id="gephi-weeks">
172+
<section class="feature-headline">
173+
<div class="feature-text">
174+
<h2>
175+
<Icon name="ph:calendar-star" class="text-primary" />
176+
<span>Gephi weeks</span>
177+
</h2>
178+
<p>
179+
The Gephi community spread all over the World. To strengthen social links and boost our creativity, we
180+
organize an annual workshop we call the "Gephi week":
181+
</p>
182+
<p>
183+
<ul>
184+
{
185+
GEPHI_WEEKS.map((gw) => (
186+
<li>
187+
<strong>{gw.year}</strong> <i>in</i> {gw.place} <i>sponsored by</i>{" "}
188+
{gw.sponsors.map((s, i) => [
189+
<a href={s.url}>{s.label}</a>,
190+
i === gw.sponsors.length - 2 ? " and " : i < gw.sponsors.length - 2 ? ", " : "",
191+
])}
192+
</li>
193+
))
194+
}
195+
</ul>
196+
</p>
197+
</div>
198+
</section>
199+
</section>
200+
201+
<section class="feature feature-left feature-flat py-4" id="blog">
202+
<section class="feature-headline">
203+
<div class="feature-text">
204+
<h2>
205+
<Icon name="ph:newspaper" class="text-primary" />
206+
<span>Blog</span>
207+
</h2>
208+
<p>
209+
Our <a href="https://gephi.wordpress.com/">blog on wordpress</a> is the right place to follow the Gephi community
210+
news. This blog is our main publication venue.
211+
</p>
212+
</div>
213+
</section>
214+
</section>
215+
</section>
216+
</main>
217+
</Layout>

0 commit comments

Comments
 (0)