|
8 | 8 | const COPY = { |
9 | 9 | pt: { |
10 | 10 | about: 'Sobre', nextMeetups: 'Próximos encontros', seeEvents: 'Ver eventos no Meetup ↗', seeMoreEvents: 'Ver mais no Meetup ↗', |
11 | | - community: 'Comunidade', members: 'Membros', events: 'Eventos', projects: 'Projetos', |
| 11 | + community: 'Comunidade', partners: 'Conheça também', members: 'Membros', events: 'Eventos', projects: 'Projetos', |
12 | 12 | conduct: 'Código de conduta', fullConduct: 'Ver Código de Conduta completo ↗', blog: 'Blog', upcoming: 'Próximos', past: 'Eventos anteriores', |
13 | 13 | eventsIntro: 'Nos encontramos para trocar conhecimento. A agenda é mantida em data/events.json.', |
14 | 14 | noEvents: 'Nenhum evento cadastrado no momento.', noMembers: 'Nenhum membro cadastrado ainda.', noPosts: 'Nenhum post publicado ainda.' |
15 | 15 | }, |
16 | 16 | en: { |
17 | 17 | about: 'About', nextMeetups: 'Next meetups', seeEvents: 'View events on Meetup ↗', seeMoreEvents: 'View more on Meetup ↗', |
18 | | - community: 'Community', members: 'Members', events: 'Events', projects: 'Projects', |
| 18 | + community: 'Community', partners: 'Discover also', members: 'Members', events: 'Events', projects: 'Projects', |
19 | 19 | conduct: 'Code of conduct', fullConduct: 'View the full Code of Conduct ↗', blog: 'Blog', upcoming: 'Upcoming', past: 'Past events', |
20 | 20 | eventsIntro: 'We get together to share knowledge. The schedule lives in data/events.json.', |
21 | 21 | noEvents: 'No events have been added yet.', noMembers: 'No members have been added yet.', noPosts: 'No posts have been published yet.' |
22 | 22 | } |
23 | 23 | }; |
24 | | - const SECTIONS = ['comunidade', 'membros', 'eventos', 'projetos', 'blog', 'conduta']; |
| 24 | + const SECTIONS = ['comunidade', 'conheca-tambem', 'membros', 'eventos', 'projetos', 'blog', 'conduta']; |
25 | 25 | let lang = 'pt'; |
26 | 26 | let state = {}; |
27 | 27 |
|
|
124 | 124 | const nav = byId('navegacao'); |
125 | 125 | clear(nav); |
126 | 126 | [ |
127 | | - ['comunidade', text('community')], ['membros', text('members')], |
| 127 | + ['comunidade', text('community')], ['conheca-tambem', text('partners')], ['membros', text('members')], |
128 | 128 | ['eventos', text('events')], ['projetos', text('projects')], ['blog', text('blog')], ['conduta', text('conduct')] |
129 | 129 | ].forEach(([id, label]) => nav.append(element('a', { href: `#${id}`, text: label, 'data-section': id }))); |
130 | 130 | } |
|
180 | 180 | }); |
181 | 181 | } |
182 | 182 |
|
| 183 | + function renderPartners() { |
| 184 | + byId('partners-title').textContent = text('partners'); |
| 185 | + byId('partners-intro').textContent = pick(state.site.partnersIntro); |
| 186 | + const container = byId('partner-cards'); |
| 187 | + clear(container); |
| 188 | + (state.site.partners || []).forEach((partner) => { |
| 189 | + const card = element('article', { class: 'card' }); |
| 190 | + const links = element('div', { class: 'card-links' }); |
| 191 | + links.append(external(partner.href, pick(partner.linkText), 'pill')); |
| 192 | + card.append(element('h3', { text: pick(partner.title) }), element('p', { text: pick(partner.text) }), links); |
| 193 | + container.append(card); |
| 194 | + }); |
| 195 | + } |
| 196 | + |
183 | 197 | function renderMembers() { |
184 | 198 | const container = byId('members-list'); |
185 | 199 | clear(container); |
|
285 | 299 | const events = state.events.map(eventView); |
286 | 300 | const upcoming = events.filter(isUpcoming).sort((a, b) => a.date - b.date); |
287 | 301 | const past = events.filter((event) => !isUpcoming(event)).sort((a, b) => b.date - a.date); |
288 | | - renderNavigation(); renderHome(upcoming); renderCommunity(); renderMembers(); |
| 302 | + renderNavigation(); renderHome(upcoming); renderCommunity(); renderPartners(); renderMembers(); |
289 | 303 | renderEvents(upcoming, past); renderProjectsAndConduct(); renderPosts(); renderFooter(); observeSections(); |
290 | 304 | } |
291 | 305 |
|
|
0 commit comments