Skip to content

Commit e5db009

Browse files
JacobCoffeeclaude
andauthored
Add content to PSF page (#225)
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent f80def7 commit e5db009

3 files changed

Lines changed: 224 additions & 22 deletions

File tree

src/app/pages/about-psf/about-psf.page.html

Lines changed: 196 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -4,32 +4,206 @@
44
<ion-menu-button [color]="liveUpdateService.needsUpdate ? 'primary' : 'medium'"></ion-menu-button>
55
<ion-badge *ngIf="liveUpdateService.needsUpdate" size=sm>1</ion-badge>
66
</ion-buttons>
7-
<ion-title>The PSF</ion-title>
7+
<ion-title>Python Software Foundation</ion-title>
88
</ion-toolbar>
99
</ion-header>
1010

1111
<ion-content>
1212

13-
<ion-grid>
14-
<ion-row>
15-
<ion-col>
16-
<h1>Python Software Foundation</h1><br>
17-
<ion-button onclick="window.open('https://psfmember.org/civicrm/contribute/transact/?reset=1&id=2', '_system', 'location=yes'); return false;">Donate to the PSF</ion-button>
18-
</ion-col>
19-
</ion-row>
20-
<ion-row>
21-
<ion-col>
22-
<ion-row>
23-
<ion-col [innerHtml]="content['about-psf']">
24-
</ion-col>
25-
</ion-row>
13+
<div class="ion-padding">
14+
<p class="psf-intro">
15+
The Python Software Foundation is the charitable organization behind the Python programming language.
16+
</p>
17+
</div>
18+
19+
<ion-card>
20+
<ion-card-header>
21+
<ion-card-title>Our Mission</ion-card-title>
22+
</ion-card-header>
23+
<ion-card-content>
24+
<p>
25+
The mission of the Python Software Foundation is to promote, protect, and advance the Python
26+
programming language, and to support and facilitate the growth of a diverse and international
27+
community of Python programmers.
28+
</p>
29+
</ion-card-content>
30+
</ion-card>
31+
32+
<ion-card>
33+
<ion-card-header>
34+
<ion-card-title>We Support the Python Community Through...</ion-card-title>
35+
</ion-card-header>
36+
<ion-card-content>
37+
<ion-list lines="none">
38+
<ion-item>
39+
<ion-icon slot="start" name="cash-outline" color="primary"></ion-icon>
40+
<ion-label class="ion-text-wrap">
41+
<strong>Grants</strong>
42+
<p>The PSF awards hundreds of thousands of dollars annually to groups and individuals around the world.</p>
43+
</ion-label>
44+
</ion-item>
45+
<ion-item>
46+
<ion-icon slot="start" name="code-slash-outline" color="primary"></ion-icon>
47+
<ion-label class="ion-text-wrap">
48+
<strong>CPython</strong>
49+
<p>We support CPython, the reference implementation of Python, and fund core developer work.</p>
50+
</ion-label>
51+
</ion-item>
52+
<ion-item>
53+
<ion-icon slot="start" name="server-outline" color="primary"></ion-icon>
54+
<ion-label class="ion-text-wrap">
55+
<strong>Infrastructure</strong>
56+
<p>We support and maintain python.org, the Python Package Index (PyPI), Python Documentation, and many other services the Python community relies on.</p>
57+
</ion-label>
58+
</ion-item>
59+
<ion-item>
60+
<ion-icon slot="start" name="people-outline" color="primary"></ion-icon>
61+
<ion-label class="ion-text-wrap">
62+
<strong>PyCon US</strong>
63+
<p>We produce and underwrite the PyCon US Conference, the largest annual gathering for the Python community.</p>
64+
</ion-label>
65+
</ion-item>
66+
</ion-list>
67+
</ion-card-content>
68+
</ion-card>
69+
70+
<ion-card>
71+
<ion-card-header>
72+
<ion-card-title>Get Involved</ion-card-title>
73+
</ion-card-header>
74+
<ion-card-content>
75+
<ion-list lines="none">
76+
<ion-item button="true" (click)="openUrl('https://psfmember.org')" detail="true">
77+
<ion-icon slot="start" name="person-add-outline" color="primary"></ion-icon>
78+
<ion-label class="ion-text-wrap">
79+
<strong>Become a Member</strong>
80+
<p>Help the PSF promote, protect, and advance the Python programming language and community!</p>
81+
</ion-label>
82+
</ion-item>
83+
<ion-item button="true" (click)="openUrl('https://psfmember.org/civicrm/contribute/transact/?reset=1&id=2')" detail="true">
84+
<ion-icon slot="start" name="heart-outline" color="danger"></ion-icon>
85+
<ion-label class="ion-text-wrap">
86+
<strong>Donate</strong>
87+
<p>Assist the foundation's goals with a donation. The PSF is a recognized 501(c)(3) non-profit.</p>
88+
</ion-label>
89+
</ion-item>
90+
<ion-item button="true" (click)="openUrl('https://www.python.org/psf/volunteer/')" detail="true">
91+
<ion-icon slot="start" name="hand-left-outline" color="primary"></ion-icon>
92+
<ion-label class="ion-text-wrap">
93+
<strong>Volunteer</strong>
94+
<p>Learn how you can help the PSF and the greater Python community!</p>
95+
</ion-label>
96+
</ion-item>
97+
<ion-item button="true" (click)="openUrl('https://www.python.org/psf/sponsorship/')" detail="true">
98+
<ion-icon slot="start" name="business-outline" color="primary"></ion-icon>
99+
<ion-label class="ion-text-wrap">
100+
<strong>Sponsors</strong>
101+
<p>Without our sponsors we wouldn't be able to help the Python community grow and prosper.</p>
102+
</ion-label>
103+
</ion-item>
104+
<ion-item button="true" (click)="openUrl('https://www.python.org/psf/grants/')" detail="true">
105+
<ion-icon slot="start" name="document-text-outline" color="primary"></ion-icon>
106+
<ion-label class="ion-text-wrap">
107+
<strong>PSF Grants Program</strong>
108+
<p>The PSF welcomes grant proposals for projects related to Python development, technology, and education.</p>
109+
</ion-label>
110+
</ion-item>
111+
<ion-item button="true" (click)="openUrl('https://www.python.org/psf/community-partners/')" detail="true">
112+
<ion-icon slot="start" name="globe-outline" color="primary"></ion-icon>
113+
<ion-label class="ion-text-wrap">
114+
<strong>Community Partners</strong>
115+
<p>Organizations partnering with the PSF to support the Python community worldwide.</p>
116+
</ion-label>
117+
</ion-item>
118+
<ion-item button="true" (click)="openUrl('https://www.python.org/psf/volunteer/pycon/')" detail="true">
119+
<ion-icon slot="start" name="star-outline" color="primary"></ion-icon>
120+
<ion-label class="ion-text-wrap">
121+
<strong>Volunteer at PyCon US</strong>
122+
<p>Help make PyCon US happen — sign up to volunteer at the conference!</p>
123+
</ion-label>
124+
</ion-item>
125+
<ion-item button="true" (click)="openUrl('https://www.python.org/psf/workgroups/')" detail="true">
126+
<ion-icon slot="start" name="git-network-outline" color="primary"></ion-icon>
127+
<ion-label class="ion-text-wrap">
128+
<strong>Work Groups</strong>
129+
<p>PSF work groups tackle specific areas like diversity, packaging, and documentation.</p>
130+
</ion-label>
131+
</ion-item>
132+
</ion-list>
133+
</ion-card-content>
134+
</ion-card>
135+
136+
<ion-list lines="full">
137+
<ion-list-header>
138+
<ion-label>Python Resources</ion-label>
139+
</ion-list-header>
140+
141+
<ion-item button="true" (click)="openUrl('https://www.python.org')" detail="true">
142+
<ion-icon slot="start" name="logo-python" color="primary"></ion-icon>
143+
<ion-label>
144+
<h2>python.org</h2>
145+
<p>The official Python website</p>
146+
</ion-label>
147+
</ion-item>
148+
149+
<ion-item button="true" (click)="openUrl('https://pypi.org')" detail="true">
150+
<ion-icon slot="start" name="cube-outline" color="primary"></ion-icon>
151+
<ion-label>
152+
<h2>PyPI</h2>
153+
<p>The Python Package Index</p>
154+
</ion-label>
155+
</ion-item>
156+
157+
<ion-item button="true" (click)="openUrl('https://docs.python.org')" detail="true">
158+
<ion-icon slot="start" name="book-outline" color="primary"></ion-icon>
159+
<ion-label>
160+
<h2>Python Docs</h2>
161+
<p>Official Python documentation</p>
162+
</ion-label>
163+
</ion-item>
164+
</ion-list>
165+
166+
<ion-list lines="full">
167+
<ion-list-header>
168+
<ion-label>PSF News & Social</ion-label>
169+
</ion-list-header>
170+
171+
<ion-item button="true" (click)="openUrl('https://pyfound.blogspot.com')" detail="true">
172+
<ion-icon slot="start" name="newspaper-outline" color="primary"></ion-icon>
173+
<ion-label>
174+
<h2>PSF Blog</h2>
175+
<p>News and updates from the PSF</p>
176+
</ion-label>
177+
</ion-item>
178+
179+
<ion-item button="true" (click)="openUrl('https://fosstodon.org/&#64;ThePSF')" detail="true">
180+
<ion-icon slot="start" name="globe-outline" color="primary"></ion-icon>
181+
<ion-label>
182+
<h2>&#64;ThePSF&#64;fosstodon.org</h2>
183+
<p>PSF on Mastodon</p>
184+
</ion-label>
185+
</ion-item>
186+
187+
<ion-item button="true" (click)="openUrl('https://x.com/ThePSF')" detail="true">
188+
<ion-icon slot="start" name="logo-twitter" color="primary"></ion-icon>
189+
<ion-label>
190+
<h2>&#64;ThePSF</h2>
191+
<p>PSF on X / Twitter</p>
192+
</ion-label>
193+
</ion-item>
194+
</ion-list>
195+
196+
<div class="ion-padding ion-text-center">
197+
<ion-button expand="block" color="danger" (click)="openUrl('https://psfmember.org/civicrm/contribute/transact/?reset=1&id=2')">
198+
<ion-icon slot="start" name="heart"></ion-icon>
199+
Donate to the PSF
200+
</ion-button>
201+
</div>
202+
203+
<ion-row>
204+
<ion-col [innerHtml]="content['about-psf']">
26205
</ion-col>
27-
</ion-row>
28-
<ion-row>
29-
<br>
30-
<br>
31-
<br>
32-
<br>
33-
</ion-row>
34-
</ion-grid>
206+
</ion-row>
207+
208+
<div style="height: 80px"></div>
35209
</ion-content>
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
.psf-hero {
2+
padding-top: 24px;
3+
padding-bottom: 8px;
4+
5+
.psf-logo {
6+
width: 80px;
7+
height: 80px;
8+
margin-bottom: 12px;
9+
}
10+
11+
h1 {
12+
font-size: 1.5rem;
13+
font-weight: 700;
14+
margin: 0;
15+
}
16+
}
17+
18+
ion-card {
19+
ion-card-content p {
20+
font-size: 0.95rem;
21+
line-height: 1.5;
22+
color: var(--ion-text-color);
23+
}
24+
}

src/app/pages/about-psf/about-psf.page.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,10 @@ export class AboutPsfPage implements OnInit {
3333
});
3434
}
3535

36+
openUrl(url: string) {
37+
window.open(url, '_system', 'location=yes');
38+
}
39+
3640
ngOnInit() {
3741
this.reloadContent();
3842
}

0 commit comments

Comments
 (0)