Merge pull request #364 from ZeusWPI/privacy

Privacy policy
This commit is contained in:
redfast00 2020-01-04 19:28:17 +01:00 committed by GitHub
commit 15aaf65456
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
66 changed files with 747 additions and 94 deletions

16
Rules
View file

@ -30,7 +30,12 @@ preprocess do
check_schema(:event, event)
end
all_privacy_items.each do |project|
check_schema(:privacy, project)
end
add_report_metadata
add_project_metadata
end
#
@ -135,6 +140,17 @@ compile '/**/*.ics' do
filter :erb
end
#
# PRIVACY
#
compile '/about/privacy/*' do
filter :kramdown
# Don't write out the privacy items themselves for now
nil
end
#
# REPORTS
#

263
content/about/privacy.erb Normal file
View file

@ -0,0 +1,263 @@
---
title: Privacybeleid
narrow_page: true
typography: true
toc: true
---
<%= render '/partials/_about_sub_navbar.*', selected: 'privacy' %>
<h1 class="title is-1 has-text-centered" id="top">Privacybeleid</h1>
<div id="table-of-contents" class="menu column is-4">
<p class="menu-label">
Inhoudstabel
</p>
<ul class="toc-depth-1" id="markdown-toc">
<li><a href="#samenvatting" id="markdown-toc-samenvatting">Samenvatting</a></li>
<li><a href="#opbouw" id="markdown-toc-opbouw">Opbouw</a></li>
<li><a href="#wanneer" id="markdown-toc-wanneer">Wanneer en waar is dit privacybeleid van toepassing?</a></li>
<li><a href="#wie" id="markdown-toc-wie">Wie heeft toegang tot de verzamelde data?</a></li>
<li><a href="#welke" id="markdown-toc-welke">Welke data worden verzameld en waarvoor worden ze gebruikt?</a></li>
<li><a href="#contact" id="markdown-toc-contact">Hoe contacteert u ons en laat u uw rechten gelden?</a></li>
<li><a href="#projecten" id="markdown-toc-projecten">Overzicht der projecten</a></li>
<li><a href="#diensten" id="markdown-toc-diensten">Overzicht der diensten</a></li>
</ul>
</div>
<div class="content">
<p>Laatst bijgewerkt op <strong><time datetime="2019-11-26">1 januari 2020</time></strong>.
</p>
<p>Zeus WPI biedt een waaier aan diensten en projecten aan aan haar leden en het algemene publiek. Met dit privacybeleid wilt ze aangeven hoe en waarvoor ze data verzamelt.</p>
<h2 class="title is-2" id="samenvatting">Samenvatting</h2>
<p>Zeus verzamelt vier grote categorieën van data:</p>
<ol>
<li>Administratieve informatie, zoals e-mailadressen en UGent-gebruikersnamen. Deze informatie heeft Zeus nodig om haar verplichtingen na te komen opgelegd door de statuten en om haar goede werking te verzekeren.</li>
<li>Technische informatie, zoals serverlogs. Deze data zijn noodzakelijk om de systemen van Zeus draaiende te houden. Buiten het opsporen en oplossen van problemen doet Zeus hier niets mee.</li>
<li>Projectdata. Hiermee worden alle gegevens bedoelt die gebruikt worden in projecten, zoals bestellingen in Haldis of transacties in Tab. Deze gegevens worden uiteraard gebruikt voor het doel van het project (bv. bestellingen opnemen bij Haldis). Uitzonderlijk kunnen ze ook gebruikt worden voor statistische of onderzoeksdoeleinden. In dat geval worden de data altijd geanonimiseerd.</li>
<li>Sommige projecten verzamelen ook gebruikersstatistieken (analytics) en/of foutrapporten. De analytics om een beter inzicht te krijgen in het gebruik van projecten en de foutrapporten om de fouten en bugs snel te kunnen oplossen.</li>
</ol>
<p>In de regel heeft enkel het bestuur toegang tot de data. Op individuele basis kunnen projectontwikkelaars ook toegang krijgen tot de data van een specifiek project, indien dit nodig zou blijken voor de verdere ontwikkeling en ontplooiing van het desbetreffende project.</p>
<h2 class="title is-2" id="opbouw">Opbouw</h2>
<p>Het privacybeleid begint met een uiteenzetting van het beleid dat van toepassing is op alle gegevensverzameling of -verwerking die Zeus doet. Dit eerste deel wordt het algemene deel genoemd. Vervolgens worden alle projecten opgesomd die bijkomende gegevens verzamelen, of waarbij bijkomende uitleg nuttig is. Sommige projecten hebben ook uitzonderingen op het algemene deel. Dit deel wordt aangeduid als het project-specifieke deel. Tot slot volgt een lijst van diensten die door meerdere projecten gebruikt worden, en waarnaar verwezen wordt in het project-specifieke deel.</p>
<h2 class="title is-2" id="wanneer">Wanneer en waar is dit privacybeleid van toepassing?</h2>
<p>Zeus stelt projecten beschikbaar aan haar leden en het publiek in het algemeen. Daarbovenop worden de diensten en projecten van Zeus ook door derden gebruikt. Onder de Algemene Verordening Gegevensbescherming (AVG / GDPR) kan Zeus verschillende rollen vervullen. Meer informatie over deze termen vindt u o.a. <a href="https://ec.europa.eu/info/law/law-topic/data-protection/reform/rules-business-and-organisations/obligations/controller-processor/what-data-controller-or-data-processor_nl">hier</a>.</p>
<h3 class="title is-3" id="verantwoordelijke">Zeus als dataverantwoordelijke</h3>
<p>Voor het aanbieden van haar projecten verzamelt Zeus data. In dat geval is Zeus zelf de dataverantwoordelijke. Bij sommige projecten doet Zeus echter een beroep op derden, die namens Zeus gegevens verzamelen. Hierbij treedt Zeus op als "Verwerkingsverantwoordelijke".</p>
<div class="example">
Voorbeelden van projecten waarbij Zeus de dataverantwoordelijke is, zijn Haldis, Tab, Hydra, enz.
</div>
<h3 class="title is-3" id="verwerker">Zeus als verwerker</h3>
<p>Zeus biedt ook diensten aan aan derden. In dat geval dient u zich te wenden tot het privacybeleid van de derde in wiens naam Zeus de data verwerkt. Zeus treedt dan op als "Verwerker".</p>
<div class="example">
Zeus kan de websites van andere verenigingen hosten op haar servers. Dan is niet het privacybeleid van Zeus van toepassing, maar dat van de vereniging wier website bij Zeus gehost wordt.
</div>
<p>Als Zeus optreedt als verwerker, zal Zeus in het algemeen slechts de absoluut noodzakelijke data verzamelen voor de integriteit en goede werking van haar systemen in stand te houden: enkel technische informatie, zoals beschreven in paragraaf <em><a href="#technisch">Technische gegevens</a></em>.</p>
<h2 class="title is-2" id="wie">Wie heeft toegang tot de verzamelde data?</h2>
<p>In de eerste plaats heeft het bestuur van Zeus toegang tot de gegevens, en in het bijzonder hebben de systeemadministrators toegang tot de data. Het bestuur beperkt zijn inzage in de gegevens tot het strikt noodzakelijke om zijn mandaat te vervullen.</p>
<div class="example">
De systeemadministrators hebben toegang tot alle gegevens, daar zij toegang hebben tot alle infrastructuur van Zeus. Uiteraard houden zij zich niet bezig met het bekijken van de verzamelde data; dit gebeurt enkel indien nodig, zoals wanneer een server crasht.
</div>
<p>Ook kunnen ontwikkelaars van een bepaald project toegang krijgen tot de data van dat project, indien dit nodig zou blijken voor de ontwikkeling van het project. Het bestuur, en de systeemadministrators in het bijzonder, kijken er op toe dat ontwikkelaars van projecten nooit meer toegang hebben dan nodig en dat de data niet misbruikt worden. </p>
<div class="example">
De ontwikkelaars van Hydra krijgen toegang de API-server en kunnen zo aan de serverlogs.
</div>
<h2 class="title is-2" id="welke">Welke data worden verzameld en waarvoor worden ze gebruikt?</h2>
Zeus verzamelt vier grote categorieën van data.
<h3 class="title is-3" id="administratie">Administratieve gegevens</h3>
<p>Zeus houdt een reeks administratieve gegevens bij over haar leden, zoals vereist door de statuten of om de goede werking van de vereniging te bewerkstelligen. Onder deze data valt onder meer:</p>
<ul>
<li>
<strong>Accountgegevens</strong>, zoals de gebruikersnaam, UGent-gebruikersnaam, enz. Dit is om de accountfunctionaliteit van de leden, zoals vereist in de statuten, mogelijk te maken.
</li>
<li>
<strong>E-mailadressen</strong>. Dit om de leden in te schrijven op de mailinglijsten, zoals vereist door de statuten.
</li>
</ul>
<p>Deze gegevens worden door u aan Zeus verstrekt op het moment dat u zich inschrijft.</p>
<p>Indien u gebruik maakt van het Google Formulier voor uw inschrijving, worden de gegevens die u daar invult, opgeslagen in Google Drive. Deze zijn onderhevig aan het privacybeleid van Google.</p>
<h3 class="title is-3" id="technisch">Technische gegevens</h3>
<p>Hieronder vallen de data die door de servers of projecten opgeslagen worden in logboeken, zoals access logs. Dit zijn logboeken van de verzoeken die gestuurd worden naar een van de servers of projecten van Zeus. In de logboeken zitten o.a. volgende data:</p>
<ul>
<li><strong>IP-adressen</strong>, van wie de verzoeken maakte</li>
<li><strong>Tijdstippen</strong>, wanneer de verzoeken gemaakt werden</li>
<li><strong>Doel</strong>, wat er precies opgevraagd werd</li>
<li>
<strong>Technische gegevens</strong>, zoals welk apparaat en software er gebruikt zijn voor het verzoek, welk protocol er gebruikt wordt en hoeveel bytes er verstuurd zijn.
</li>
</ul>
<p>Deze informatie wordt gebruikt om de toestand van de server in de gaten te houden, teneinde de dienstverlening van de server te garanderen. Zo kunnen we de belasting van de server in de gaten houden, misbruik detecteren en foute verzoeken (bv. missende webpagina's) verhelpen.</p>
<div class="example">Een typische gebeurtenis in het serverlogboek ziet er als volgt uit:<br>
<p>
<code>94.XXX.XXX.XXX - [11/Sep/2019:11:18:59 +0200] "GET /api/2.0/association/logo/js.png HTTP/1.1" 200 34464 "-" "okhttp/3.12.2"</code>
</p>
<p>Deze informatie zegt ons:</p>
<ul>
<li>Het <span class="acronym">IP</span>-adres van de gebruiker (hier onherkenbaar gemaakt).</li>
<li>Het tijdstip waarop het verzoek naar de API gestuurd werd.</li>
<li>Technische informatie over het verzoek: wat is er opgevraagd, welk protocol is er gebruikt, hoeveel bytes zijn er verstuurd om aan het verzoek te voldoen.</li>
<li>De
<em><a href="https://nl.wikipedia.org/wiki/Useragent">useragent</a></em> van het verzoek: welk apparaat stuurde het verzoek en waarmee. In dit voorbeeld gaat het bijvoorbeeld over de Android-app van Hydra.
</li>
</ul>
<p>Specifiek vraagt dit verzoek het logo van een studentenvereniging op, meer bepaald
<a href="https://hydra.ugent.be/api/2.0/association/logo/js.png">dit logo</a>.</p>
</div>
<p>Deze data worden niet automatisch verwerkt; ze dienen om manueel de oorzaken van problemen te vinden. Serverlogs worden onbeperkt bijgehouden.</p>
<h3 class="title is-3" id="project">Projectdata</h3>
<p>Veel projecten hebben data nodig om te kunnen functioneren, dus verzamelt Zeus die uiteraard ook. Vaak zijn dit gegevens die u zelf ingeeft of laat genereren door het project dat u gebruikt. Soms worden deze data ook benoemd als "door gebruikers gegenereerde gegevens".</p>
<div class="example">
Als u bijvoorbeeld gebruik maakt van Haldis, moet Zeus opslaan wat u besteld hebt, of Haldis zal niet werken. Bij Tab gaat het om de transacties.
</div>
<p>Afhankelijk van de applicatie is het niet altijd mogelijk om de gegevens te verwijderen of aanpassen zonder de integriteit of goede werking van het project op de helling te zetten. In dat geval probeert Zeus de data zoveel mogelijk te anonimiseren als u een verwijderverzoek stuurt of zoveel mogelijk data aan te passen als u een aanpassingsverzoek stuurt. Bij een verwijderingsverzoek probeert Zeus de relevante en verwijderbare data zo snel mogelijk te verwijderen. Doch is het mogelijk dat de data door back-upsystemen langer bewaard blijven.</p>
<div class="example">
Bij Tab kan u bijvoorbeeld geen transacties laten verwijderen, maar wel anonimiseren.
</div>
<p>Naast het gebruik van deze gegevens voor het doel van het project te verwezenlijken, kunnen deze gegevens ook gebruikt worden voor statistisch of wetenschappelijk onderzoek, om zo inzichten in het algemene doen en laten van de leden van de vereniging. Bij het gebruik hiervoor worden de data altijd geanonimiseerd. Kijk bijvoorbeeld bij de gedetailleerde uitleg over Haldis voor een voorbeeld.</p>
<h3 class="title is-3">Gebruiksstatistieken en foutrapporten</h3>
<p>Bij sommige projecten (vaak de projecten die aangeboden worden aan een breed publiek) worden ook statistieken over het gebruik van het project en eventuele foutrapporten verzameld. De gebruiksstatistieken (analytics) worden verzameld om inzicht te krijgen in het gebruik van een project, om zo de aandacht op de vaak-gebruikte onderdelen te kunnen vestigen. De foutrapporten zijn nuttig om bugs en andere fouten zo snel en goed mogelijk op te lossen.</p>
<p>Voor deze diensten doet Zeus vaak een beroep op diensten van derden. Zie het projectspecifieke deel voor meer informatie.</p>
<div class="example">
Als blijkt uit de analytics dat een bepaald deel van Hydra niet vaak gebruikt wordt, kan Zeus overwegen om dat onderdeel te schrappen, om zo meer aandacht te kunnen geven aan de delen die wel vaak gebruikt worden.
</div>
<h2 class="title is-2" id="contact">Hoe contacteert u ons en laat u uw rechten gelden?</h2>
<p>Om uw rechten te laten gelden, voor vragen of opmerkingen, kan u Zeus contacteren via de <%= link_to "contactpagina", "/contact" %>.</p>
<p>Hieronder volgt een korte opsomming van uw rechten:</p>
<ul>
<li><strong>Recht op inzage.</strong> U mag weten of Zeus gegevens over u heeft, welke gegevens dat zijn en op welke manier en waarom Zeus ze gebruiken. Ook heeft u het recht een overzicht te krijgen wie uw gegevens verwerkt.</li>
<li><strong>Recht op rectificatie en aanvulling.</strong> U heeft het recht in voorkomend geval foute gegevens te laten corrigeren, bv. door een rechtzetting of aanvulling te vragen.</li>
<li><strong>Recht op vergetelheid.</strong> U kan verzoeken dat Zeus de gegevens die we over u hebben te wissen op grond van een aantal zaken.</li>
<li><strong>Recht op overdraagbaarheid.</strong> U hebt het recht om uw gegevens op te vragen en te ontvangen in een gestructureerd, door een machine leesbaar document.</li>
<li><strong>Recht op beperking van de verwerking.</strong> U heeft het recht om de verwerking van uw gegevens te beperken, bijvoorbeeld als er een juridische procedure loopt, een rechtzetting nog niet is doorgevoerd, of de gegevens onrechtmatig gebruikt worden.</li>
<li><strong>Recht op bezwaar.</strong> Indien u meent dat Zeus uw gegevens verwerken op onrechtmatige basis, kan u bezwaar aantekenen.</li>
</ul>
<h2 class="title is-2" id="projecten">Overzicht der projecten</h2>
<h3 class="title is-3" id="specifiek">Project-specifieke bepalingen</h3>
<p>Onder deze paragraaf volgt een lijst van alle projecten... </p>
<ol>
<li>... met uitzonderingen op het algemeen beleid, of</li>
<li>... waarvoor er bijkomende informatie is over het gebruik van data in het project.</li>
</ol>
<hr>
<% privacy_projects("additional").each do |project| %>
<%= render '/partials/_privacy.erb', project: project %>
<hr>
<% end %>
<h3 class="title is-3" id="specifiek">Projecten zonder specifieke bepalingen</h3>
<p>Deze projecten vallen integraal onder het algemene beleid.</p>
<ul>
<% privacy_projects("general").each do |project| %>
<%= render '/partials/_privacy_link.erb', project: project %>
<% end %>
</ul>
<h3 class="title is-3" id="in-ontwikkeling">Projecten in ontwikkeling</h3>
<p>Deze projecten zijn nog in ontwikkeling. U mag geen persoonlijke data aan deze projecten leveren. Doet u dit toch, dan is dit op eigen risico: noch de functionaliteit, noch de beveiliging van deze projecten staat op punt.</p>
<ul>
<% privacy_projects("development").each do |project| %>
<%= render '/partials/_privacy_link.erb', project: project %>
<% end %>
</ul>
<h3 class="title is-3" id="in-opdracht">Projecten in opdracht</h3>
<p>Deze projecten worden door Zeus in opdracht van derden aangeboden. Hierbij treedt Zeus op als verwerker, zoals uitgelegd in paragraaf <em><a href="#verwerker">Zeus als verwerker</a></em>. Dat komt er op neer dat Zeus enkel technische informatie verzamelt.</p>
<ul>
<% privacy_projects("processor").each do |project| %>
<%= render '/partials/_privacy_link.erb', project: project %>
<% end %>
</ul>
<h2 class="title is-2" id="diensten">Overzicht der diensten</h2>
<p>Verschillende projecten gebruiken dezelfde diensten van derden. In plaats van deze informatie meerdere keren in het beleid te plaatsen, wordt de informatie hier eenmaal vermeld. Vanuit de beschrijving van de projecten wordt er dan verwezen naar deze bijlagen.</p>
<h3 class="title is-3" id="google-analytics">Gebruik van Google Analytics</h3>
<p>Uitgebreide informatie over hoe Google met uw gegevens omgaat, vindt u <a href="https://www.google.com/policies/privacy/partners/">hier</a>. Verdere details over het gebruik van Google Analytics door Zeus:</p>
<ul>
<li>Uw gegevens worden gedurende 14 maanden bewaard door Google Analytics na uw laatste bezoek.</li>
<li>Uw gegevens worden door Google niet gedeeld met derden.</li>
<li>Google verwerkt uw gegevens mogelijk buiten de <span class="acronym">EER</span>. Google is gecertificeerd in het kader van het EU-VS-privacyschild.</li>
<li>Er wordt geen informatie verzameld waarmee Zeus of Google u kunnen identificeren (zoals <span class="acronym">IP</span>-adressen).</li>
<li>Indien u niet wenst dat Zeus uw gegevens verzamelen met Google Analytics, kan u o.a. deze <a href="https://tools.google.com/dlpage/gaoptout/?hl=nl">add-on</a> installeren.</li>
</ul>
<p>Enkele voorbeelden van de verzamelde gegevens:</p>
<ul>
<li><strong>Softwareversies.</strong> Welke browser u gebruikt en zijn versie, welk besturingssysteem, enz.</li>
<li><strong>Gebruiksdata.</strong> Hoe u de website gebruik, wat u bezoekt, hoe lang u die onderdelen bezoekt, enz.</li>
<li><strong>Hardware-informatie.</strong> De resolutie van uw scherm.</li>
</ul>
<p>Door deze informatie kan Zeus ervoor zorgen dat de website goed werkt in de browsers die de bezoekers gebruiken. Als het merendeel van de gebruikers bv. een mobiel toestel gebruikt, kan Zeus haar aandacht richten op het optimaliseren van de website voor mobiel gebruik.</p>
<h3 class="title is-3" id="cloudflare">Gebruik van Cloudflare CDN</h3>
<p>We gebruiken de Cloudflare CDN om softwarebibliotheken te laden. Zie <a href="https://www.cloudflare.com/privacypolicy/">hun privacybeleid</a> (Engels).</p>
<h3 class="title is-3" id="crashlytics">Foutrapporten met Crashlytics</h3>
<p>Voor het verzamelen van foutrapporten gebruiken sommige apps Crashlytics van Firebase. Uitgebreide informatie over hoe Google met uw gegevens omgaat, vindt u <a href="https://www.google.com/policies/privacy/partners/">hier</a>. Verdere details over het gebruik van Google Analytics door Zeus:</p>
<ul>
<li>Stacktraces en bijhorende anonieme identificatienummers van crashes worden 90 dagen bewaard door Google.</li>
<li>Er wordt geen informatie verzameld waarmee we u kunnen identificeren (zoals <span class="acronym">IP</span>-adressen).</li>
</ul>
</div>

View file

@ -0,0 +1,4 @@
---
status: processor
link: https://12urenloop.be/
---

View file

@ -0,0 +1,9 @@
---
status: additional
---
- Softwarebibliotheken worden geladen via de Google Hosted Libraries. Daarop is het [privacybeleid van Google](https://policies.google.com/privacy) van toepassing, alsook [deze bijkomende verklaring](https://developers.google.com/speed/libraries/terms) (Engels).
- Softwarebibliotheken worden geladen via Cloudflare. Zie [hun privacybeleid](https://www.cloudflare.com/privacypolicy/) (Engels).
- Een knop om de pagina te delen op Facebook wordt ook geladen. Zie [hun privacybeleid](https://www.facebook.com/full_data_use_policy).
- Google Analytics wordt gebruikt, zie de paragraaf [*Gebruik van Google Analytics*](#google-analytics).
- De kaart wordt opgehaald van servers van Mapbox, zie [hun privacybeleid](https://www.mapbox.com/legal/privacy/) (Engels).

View file

@ -0,0 +1,3 @@
---
status: general
---

View file

@ -0,0 +1,3 @@
---
status: development
---

View file

@ -0,0 +1,3 @@
---
status: general
---

View file

@ -0,0 +1,3 @@
---
status: general
---

View file

@ -0,0 +1,8 @@
---
status: additional
---
Het gebruik van Fathom moet in twee categorieën ingedeeld worden:
- Als gebruiker van een website met Fathom als analytics. In dit geval verzamelt Fathom geen persoonlijke data, zie het [databeleid](https://usefathom.com/data) (Engels).
- Als gebruiker van Fathom zelf. Fathom verzamelt geen bijkomende data in dat geval.

View file

@ -0,0 +1,3 @@
---
status: processor
---

View file

@ -0,0 +1,3 @@
---
status: development
---

View file

@ -0,0 +1,7 @@
---
status: additional
---
- De website gebruikt de Google Charts-api voor het tonen van grafieken. Hierop is het privacybeleid van Google Charts van toepassing, dat [hier](https://developers.google.com/chart/interactive/docs/security_privacy) beschikbaar is. Zoals ook vermeld op laatstgenoemde pagina, is het [algemene privacybeleid](https://policies.google.com/privacy) van Google van toepassing.
- De applicatie verzamelt automatisch data vanop Github, zoals commits en issues. Deze data worden verzameld van uit de repositories van Zeus WPI. Deze gegevens zijn uiteraard essentieel voor de werking van Gamification. Daar de gegevens op geautomatiseerde wijze van Github gehaald worden, zijn verwijder- of aanpasverzoeken niet mogelijk.
- Bij het bezoeken van Gamification worden avatars geladen van Github. Hierop is het [privacybeleid van Github](https://help.github.com/en/github/site-policy/github-privacy-statement) van toepassing.

View file

@ -0,0 +1,3 @@
---
status: processor
---

View file

@ -0,0 +1,7 @@
---
status: additional
---
Bij Gitlab moet opgemerkt worden dat de code in de repositories niet onder persoonlijke gegevens valt zoals bedoeld in dit privacybeleid. Dit beleid is dan ook niet van toepassing op de inhoud van de repositories. Het is de verantwoordelijkheid van de gebruikers om geen persoonlijke informatie in de repositories te plaatsen.
Door technische beperkingen kunnen niet alle persoonlijke gegevens verwijderd of geanonimiseerd worden. Zo kunnen de commits bijvoorbeeld noch verwijderd, noch geanonimiseerd worden.

View file

@ -0,0 +1,7 @@
---
status: additional
---
De bestellingen op Haldis worden, naast het laten werken van Haldis en zo ervoor zorgen dat u uw bestelling ontvangt, ook gebruikt om statistieken op te stellen om inzichten te krijgen in de consumptiegewoonten van Zeus, zoals bijvoorbeeld [hier](https://zeus.ugent.be/blog/17-18/eet-en-drankgewoonten-in-zeus/). Bij het opstellen van de statistieken worden de data geanonimiseerd.
Door technische beperkingen is het niet mogelijk data van Haldis te verwijderen. Ze worden hoogsten geanonimiseerd.

View file

@ -0,0 +1,3 @@
---
status: processor
---

View file

@ -0,0 +1,36 @@
---
status: additional
---
##### Website
De [website van Hydra](https://hydra.ugent.be) maakt gebruik van Google Analytics (zie details in de paragraaf [_Gebruik van Google Analytics_](#google-analytics)) voor het verzamelen van bezoekersinformatie. Dit om te weten hoeveel gebruikers de website gebruiken, hoe deze gebruikers de website vinden en hoe lang ze er op blijven.
##### Apps
Voor de apps wordt de verzamelde data opgedeeld in twee categorieën: analytics en foutrapportage:
- **Analytics.** Zeus wilt graag weten hoe u de app gebruikt, welke onderdelen u het meest gebruikt, hoe lang u de app gebruikt, enzovoort. Dit om de apps optimaal te kunnen afstellen op uw behoeften. Zeus gebruikt deze data niet om gebruikers te identificeren. Voor analytics wordt Google Analytics (zie details in de paragraaf [_Gebruik van Google Analytics_](#google-analytics)) gebruikt.
- **Foutrapportage.** Zeus wilt weten wat u deed toen de crash zich voordeed, alsook welk apparaat u gebruikt, welke software-versies u hebt, enz. Hiermee kan Zeus sneller de oorzaak van de fout opsporen en oplossen. Voor foutrapportage wordt Crashlytics gebruikt (zie paragraaf [_Foutrapporten met Crashlytics_](#crashlytics)).
Daarnaast gebruiken de apps andere diensten van derden. Indien u gebruik maakt van de betreffende functie in de app, kunnen bijkomende regelingen van toepassing zijn:
- **Urgent.fm.** Contacteer [Urgent.fm](http://urgent.fm/wie-zijn-wij) voor meer informatie.
- **Activiteiten van verenigingen.** Contacteer de [Dienst StudentenActiviteiten](https://dsa.ugent.be/contact/) voor meer informatie.
- **Kaart van de locaties van de resto's.** Hierbij wordt Google Maps gebruikt. Indien u toestemming geeft, zal uw locatie gebruikt worden om de kaart te centreren op uw locatie. Google Maps is onderhevig aan het [privacybeleid van Google](https://policies.google.com/privacy).
- **Informatie over bibliotheken.** Raadpleeg de [disclaimer](https://lib.ugent.be/nl/info/disclaimer).
##### API
Bij het gebruik van de API worden enkel technische data verzameld.
##### Assistent
Bij het gebruik van "Hydra van de UGent" in de Google Assistent gebruiken we deze diensten:
- **Technische informatie**, zoals serverlogs (zie de paragraaf [_Technische gegevens_](#technisch).
- **Dialogflow**, voor de gespreksmogelijkheden (d.w.z. verstaan wat u bedoelt). Deze data is onderhevig aan het privacybeleid van [Google](https://policies.google.com/privacy)
Dialogflow verzamelt geen persoonlijke data. Om de herkenning van de gesprekken tussen u en Hydra van de UGent te verbeteren, slaat Dialogflow de inhoud van de gesprekken in tekstuele vorm op. Deze kunnen door het bestuur van Zeus of de medewerkers van het Hydra-project beoordeeld worden, om zo de nauwkeurigheid van de herkenning te verbeteren.

View file

@ -0,0 +1,7 @@
---
status: additional
---
De citaten die hier verzameld zijn, zijn zichtbaar voor leden van de Mattermost-instantie van Zeus. Daar het doel van dit project het verzamelen en bijhouden van citaten is, worden citaten niet automatisch verzameld.
Buiten de citaten worden geen gegevens verzameld.

View file

@ -0,0 +1,11 @@
---
status: additional
---
Bij Mattermost is het [standaardprivacybeleid](https://github.com/mattermost/mattermost-server/blob/master/build/PRIVACY_POLICY.md) van een zelf-gehoste Mattermost-applicatie van toepassing.
Op Mattermost kunnen berichten in twee categorieën ingedeeld worden: openbare berichten en private berichten. Onder private berichten worden alle berichten in private gesprekken of besloten kanalen verstaan. Berichten in openbare kanalen vallen onder openbare berichten.
Daar de private berichten mogelijk een gevoelig karakter hebben, worden deze berichten standaard na een termijn van 1 jaar gewist. U kunt een uitzondering verkrijgen op deze standaardtermijn door contact op te nemen met de systeemadministrators van Zeus.
Door de gevoeligheid der data hebben projectontwikkelaars geen toegang tot deze data; enkel het bestuur heeft toegang.

View file

@ -0,0 +1,9 @@
---
status: additional
---
MessageOS bestaat uit meerdere subprojecten:
- [Cammiechat](https://git.zeus.gent/kelder/cammiechat/tree/master). Dit onderdeel valt integraal onder het algemene privacybeleid.
- [TAp](https://git.zeus.gent/ZeusWPI/TAp). Dit onderdeel valt integraal onder het algemene privacybeleid.
- [MessageOS](https://git.zeus.gent/ZeusWPI/ass_messages). Dit onderdeel verzamelt geen data; berichten blijven getoond op het scherm in de kelder tot de server herstart wordt of de berichten door nieuwe berichten van het scherm gaan.

View file

@ -0,0 +1,3 @@
---
status: development
---

View file

@ -0,0 +1,3 @@
---
status: general
---

View file

@ -0,0 +1,3 @@
---
status: general
---

View file

@ -0,0 +1,3 @@
---
status: processor
---

View file

@ -0,0 +1,19 @@
---
status: additional
---
De website van Zeus verzamelt bijkomende data:
- De website laadt Font Awesome via een site van derden, MaxCDN. Zie [hun privacybeleid](https://www.bootstrapcdn.com/privacy-policy/) (Engels).
- Bezoekersstatistieken worden bijgehouden met Fathom, zie de paragraaf [*Fathom*](#fathom).
- Sommige pagina's kunnen om bijkomende functionaliteit aan te bieden, aanvullende zaken laden via services van derden. Hieronder is een lijst van alle gebruikte services en wat ze laden:
- Gebruikersdata van [*Gamification*](#gamification).
- Kaarten via OpenStreetMaps. Zie [hun privacybeleid](https://wiki.osmfoundation.org/wiki/Privacy_Policy) (Engels).
- Softwarebibliotheken via Stackpath. Zie [hun privacybeleid](https://www.stackpath.com/legal/privacy-statement/) (Engels).
- Afbeeldingen via [jaspervdj.be](https://jaspervdj.be/images/) (Engels).
- Formulieren via Google Forms en Google Spreadsheets. Zie het [privacybeleid van Google](https://policies.google.com/privacy) (Engels).
- D3 via [d3js.org](https://d3js.org).
- Softwarebibliotheken via Cloudflare, zie de [gelijknamige paragraaf](#cloudflare).
- Video's via Invidious. Zie [hun privacybeleid](https://invidio.us/privacy) (Engels).
- Video's via Vimeo. Zie [hun privacybeleid](https://vimeo.com/privacy) (Engels).

View file

@ -0,0 +1,10 @@
---
status: additional
---
Merk op dat Zeus niet de bedoeling heeft haar leden financiële dienstverleningen aan te bieden via Tab. Het "geld" op Tab wordt best vergeleken met een systeem voor drankbonnetjes of virtueel geld in een computerspel. Meer technisch heeft Zeus de bedoeling om een wat de ECB "virtual currency scheme with bidirectional flow" (virtuele valuta met omzetting in twee richtingen) noemt aan te bieden. Aangezien het geld op Tab enkel gebruikt kan worden voor aankopen, is hier geen sprake van een financiële dienstverlening.
Niettemin kunnen de gegevens op Tab gevoelig zijn; derhalve heeft enkel het bestuur toegang tot deze gegevens. Projectontwikkelaars hebben geen toegang.
Door technische beperkingen is het niet mogelijk data van Tab te verwijderen. Ze worden hoogsten geanonimiseerd.

View file

@ -0,0 +1,7 @@
---
status: additional
---
De bestellingen op Tap worden, naast het laten werken van Tap en zo ervoor zorgen dat uw drank aangerekend wordt, ook gebruikt om statistieken op te stellen om inzichten te krijgen in de consumptiegewoonten van Zeus, zoals bijvoorbeeld [hier](https://zeus.ugent.be/blog/17-18/eet-en-drankgewoonten-in-zeus/). Bij het opstellen van de statistieken worden de data geanonimiseerd.
Door technische beperkingen is het niet mogelijk data van Tap te verwijderen. Ze worden hoogsten geanonimiseerd.

View file

@ -0,0 +1,10 @@
---
status: additional
---
Tappb verzamelt bijkomende data door het gebruik van Firebase. Het [het privacybeleid](https://firebase.google.com/support/privacy) (Engels) van Firebase verschaft uitgebreide informatie. Concreet gebruikt Tappb volgende diensten en gebruikt daarbij volgende data:
- **Firebase Cloud Messaging**. Dit wordt gebruikt om meldingen naar de applicatie te sturen. Hiervoor wordt het "instance ID" verzameld, om te identificeren naar welk toestel een melding gestuurd moet worden. Deze worden onbeperkt bijgehouden. Indien dit ID wenst te verwijderen, zal Firebase het ID binnen de 180 dagen verwijderen.
- **ML Kit for Firebase**. Dit wordt gebruikt om de barcodes van producten te scannen. De afbeeldingen met barcodes worden tijdelijk bewaard op de servers van Firebase en worden gewoonlijk na enkele uren verwijderd. Meer informatie is tevens te vinden op [deze pagina](https://cloud.google.com/vision/docs/data-usage) (Engels). Ook hier worden "instance ID"s bijgehouden, volgens dezelfde voorwaarden als bij Firebase Cloud Messaging.
Ook gebruikt Tappb de diensten van [Tab](#tab) en [Tap](#tap).

View file

@ -0,0 +1,3 @@
---
status: development
---

View file

@ -0,0 +1,5 @@
---
status: additional
---
De wiki laadt bibliotheken via Cloudflare (zie de [gelijknamige paragraaf](#cloudflare)) en [mathjax.org](https://www.mathjax.org/).

View file

@ -0,0 +1,3 @@
---
status: development
---

View file

@ -0,0 +1,3 @@
---
status: development
---

View file

@ -0,0 +1,3 @@
---
status: general
---

View file

@ -1,36 +1,3 @@
.blogpost {
position: relative;
#table-of-contents {
@include tablet {
position: absolute;
left: 100%;
}
@include mobile {
text-align: center;
}
#markdown-toc {
@extend .menu-list;
&, ul {
margin: 0;
list-style: none;
}
}
}
}
$sel: '';
@for $i from 1 through 9 {
$sel: if($i == 1, "ul", selector-nest($sel, "ul")) !global;
#markdown-toc.toc-depth-#{$i} #{$sel} {
display: none;
}
}
@keyframes lineAnimation {
to {
width: 80px;

View file

@ -0,0 +1,7 @@
.example {
@extend .box;
&:before {
content: "Voorbeeld. ";
font-weight: bold;
}
}

View file

@ -0,0 +1,35 @@
// CSS related to the TOC
#table-of-contents {
@include tablet {
position: absolute;
left: 100%;
}
@include mobile {
text-align: center;
}
#markdown-toc {
@extend .menu-list;
&, ul {
margin: 0;
list-style: none;
}
}
}
$sel: '';
@for $i from 1 through 9 {
$sel: if($i == 1, "ul", selector-nest($sel, "ul")) !global;
#markdown-toc.toc-depth-#{$i} #{$sel} {
display: none;
}
}
// Must be applied to the element containing the toc
.toc-container {
position: relative;
}

View file

@ -40,3 +40,5 @@ body {
@import "includes/navbar";
@import "includes/search";
@import "includes/about";
@import "includes/privacy";
@import "includes/toc";

View file

@ -1,7 +1,4 @@
---
title: 12urenloop
github: https://github.com/ZeusWPI/12urenloop
site: https://12urenloop.be/
logo_image: 12urenloop.png
priority: 50
---

View file

@ -1,7 +1,4 @@
---
title: Blokmap
github: https://github.com/ZeusWPI/blokmap
site: http://blok.ugent.be/
logo_image: Logos_Blokmap.svg
priority: 25
---

View file

@ -1,7 +1,4 @@
---
title: Cat
site: https://cat.zeus.gent/
gitlab: https://git.zeus.gent/ZeusWPI/cat
logo_image: cat.png
priority: 35
---

View file

@ -1,7 +1,4 @@
---
title: Doorkeeper
github: https://github.com/ZeusWPI/Doorkeeper
site: https://github.com/ZeusWPI/Doorkeeper
logo_image: Logos_Slotmachiin.svg
priority: 30
---

View file

@ -1,7 +1,4 @@
---
title: FK Enrolment.
github: https://github.com/ZeusWPI/FK-enrolment
site: https://registratie.fkgent.be/
logo_letter: E
logo_color: "#FFBBDD"
priority: 5

View file

@ -1,7 +1,4 @@
---
title: G2
github: https://github.com/ZeusWPI/g2-frontend
site: https://github.com/ZeusWPI/g2-backend
logo_image: Logos_G2.svg
priority: 45
---

View file

@ -1,7 +1,4 @@
---
title: Gamification
github: https://github.com/ZeusWPI/Gamification
site: https://zeus.ugent.be/game
logo_image: Logos_Gamification.svg
priority: 30
---

View file

@ -1,7 +1,4 @@
---
title: Gandalf
github: https://github.com/ZeusWPI/Gandalf
site: https://event.fkgent.be/
logo_image: Logos_Gandalf.svg
priority: 5
---

View file

@ -1,7 +1,4 @@
---
title: Haldis
github: https://github.com/ZeusWPI/Haldis
site: https://haldis.zeus.gent/
logo_image: Logos_Haldis.svg
priority: 35
---

View file

@ -1,7 +1,4 @@
---
title: Lana
github: https://github.com/ZeusWPI/Lana
site: https://github.com/ZeusWPI/Lana
logo_letter: L
logo_color: "#E4C6A7"
priority: 20

View file

@ -1,7 +1,4 @@
---
title: Mozaic
github: https://github.com/ZeusWPI/mozaic
site: https://github.com/ZeusWPI/mozaic
logo_image: mozaic.png
priority: 41
---

View file

@ -1,7 +1,4 @@
---
title: Saruman
github: https://github.com/ZeusWPI/Saruman
site: https://materiaal.12urenloop.be/
logo_letter: S
logo_color: grey
priority: 5

View file

@ -1,7 +1,4 @@
---
title: zeus.ugent.be
github: https://github.com/ZeusWPI/zeus.ugent.be
site: https://zeus.ugent.be
logo_letter: Z
logo_color: "#FF7F00"
priority: 40

View file

@ -1,7 +1,4 @@
---
title: SlotMachien
github: https://github.com/ZeusWPI/slotmachien
site: https://github.com/ZeusWPI/slotmachien
logo_image: Logos_Slotmachien.svg
priority: -1
---

View file

@ -1,7 +1,4 @@
---
title: Tab
github: https://github.com/ZeusWPI/Tab
site: https://tab.zeus.gent/
logo_image: Logos_Tab.svg
priority: 40
---

View file

@ -1,7 +1,4 @@
---
title: Tap
github: https://github.com/ZeusWPI/Tap
site: https://tap.zeus.gent/
logo_image: Logos_Tap.svg
priority: 40
---

View file

@ -1,7 +1,4 @@
---
title: Tappb
github: https://github.com/ZeusWPI/tappb
site: https://play.google.com/store/apps/details?id=gent.zeus.tappb
logo_image: Logos_Tappb.svg
priority: 39
---

119
data/projecten.yaml Normal file
View file

@ -0,0 +1,119 @@
---
data:
12urenloop:
name: 12urenloop
site: https://12urenloop.be/
repo: https://github.com/12urenloop
blokmap:
name: Blokmap
site: https://blok.ugent.be
repo: https://github.com/ZeusWPI/blokmap
cat:
name: Cat
site: https://cat.zeus.gent/
repo: https://git.zeus.gent/ZeusWPI/cat
dap:
name: De Account Pagina
repo: https://github.com/ZeusWPI/DAP
doorkeeper:
name: Doorkeeper
repo: https://github.com/ZeusWPI/Doorkeeper
fathom:
name: Fathom
site: https://stats.zeus.gent/
fk_enrolment:
name: FK Enrolment
site: https://registratie.fkgent.be/
repo: https://github.com/ZeusWPI/FK-enrolment
g2:
name: G2
site: https://github.com/ZeusWPI/g2-frontend
repo: https://github.com/ZeusWPI/g2-backend
gamification:
name: Gamification
site: https://zeus.ugent.be/game
repo: https://github.com/ZeusWPI/Gamification
gandalf:
name: Gandalf
site: https://event.fkgent.be/
repo: https://github.com/ZeusWPI/Gandalf
gitlab:
name: Gitlab
site: https://git.zeus.gent
haldis:
name: Haldis
site: https://haldis.zeus.gent/
repo: https://github.com/ZeusWPI/Haldis
httpizza:
name: HTTPizza
repo: https://github.com/ZeusWPI/HTTPizza
hydra:
name: Hydra
site: https://hydra.ugent.be
repo: https://github.com/ZeusWPI/Hydra
lana:
name: Lana
repo: https://github.com/ZeusWPI/Lana
mattermost:
name: Mattermost
site: https://mattermost.zeus.gent
mozaic:
name: Mozaic
repo: https://github.com/ZeusWPI/mozaic
sad:
name: "Services Are Down D: Status"
site: https://sad.zeus.gent/
repo: https://github.com/ZeusWPI/SADStatus
saruman:
name: Saruman
site: https://materiaal.12urenloop.be/
repo: https://github.com/ZeusWPI/Saruman
site:
name: zeus.ugent.be
site: https://zeus.ugent.be
repo: https://github.com/ZeusWPI/zeus.ugent.be
slotmachien:
name: SlotMachien
repo: https://github.com/ZeusWPI/slotmachien
tab:
name: Tab
site: https://tab.zeus.gent/
repo: https://github.com/ZeusWPI/Tab
tap:
name: Tap
site: https://tap.zeus.gent/
repo: https://github.com/ZeusWPI/Tap
tappb:
name: Tappb
site: https://play.google.com/store/apps/details?id=gent.zeus.tappb
repo: https://github.com/ZeusWPI/tappb
tuxcape:
name: TuxcAPE
repo: https://github.com/ZeusWPI/Tuxcape
zauth:
name: Zeus AUTHentication Service
repo: https://github.com/ZeusWPI/zauth
zinc:
name: ZINC
site: https://zinc.zeus.gent
repo: https://github.com/ZeusWPI/zinc
messageos:
name: MessageOS
site: https://git.zeus.gent/ZeusWPI/ass_messages
mattermore:
name: Mattermore
repo: https://git.zeus.gent/mattermost/mattermore
pannenkoekenwachtrij:
name: Pannenkoekenwachtrij
repo: https://git.zeus.gent/kelder/pannenkoekenwachtrij
zid:
name: ZID
repo: https://git.zeus.gent/rien/zid
endorsement:
name: Endorsement
repo: https://git.zeus.gent/bestuur/endorsement
site: https://endorsement.zeus.gent/
wiki:
name: Wiki
site: https://zeus.ugent.be/wiki

View file

@ -1,4 +1,4 @@
<article class="blogpost column is-offset-2 is-8" markdown="1">
<article class="toc-container column is-offset-2 is-8" markdown="1">
<% if item[:toc] %>
<div id="table-of-contents" class="menu column is-4" markdown="1">

View file

@ -5,7 +5,7 @@
<main class="section">
<% if item[:narrow_page] %>
<div class="columns">
<article class="column is-8 is-offset-2">
<article class="column is-8 is-offset-2 <%= 'toc-container' if @item[:toc] %>">
<% end %>
<%= yield %>

View file

@ -2,6 +2,7 @@
<ul>
<li class="<%= 'is-active' if @selected == 'about'%>"><a href="/about/about">Zeus WPI</a></li>
<li class="<%= 'is-active' if @selected == 'statuten'%>"><a href="/about/statuten">Statuten</a></li>
<li class="<%= 'is-active' if @selected == 'privacy'%>"><a href="/about/privacy">Privacybeleid</a></li>
<li class="<%= 'is-active' if @selected == 'historiek'%>"><a href="/about/historiek">Historiek</a></li>
<li class="<%= 'is-active' if @selected == 'oud-bestuur'%>"><a href="/about/oud-bestuur">Oud-bestuur</a></li>
<li class="<%= 'is-active' if @selected == 'verslagen'%>"><a href="/about/verslagen">Verslagen</a></li>

View file

@ -35,6 +35,10 @@
<a href="https://github.com/ZeusWPI/zeus.ugent.be">
<span class="hidden-xs"> View on GitHub </span>
<%= fa :github %>
</a> |
<a href="/about/privacy">
<span class="hidden-xs">Privacy</span>
<%= fa :'user-secret' %>
</a>
</p>
</div>

View file

@ -0,0 +1,21 @@
<h4 class="title is-4" id="<%= project[:id] %>"><%= project[:name] %></h4>
<p class="subtitle is-6">
<% if project.key?(:site) || project.key?(:repo) %>
Nuttige links:
<% end %>
<% if project.key?(:site) %>
<a href="<%= project[:site] %>">projectwebsite</a>
<% end %>
<% if project.key?(:site) && project.key?(:repo) %>
|
<% end %>
<% if project.key?(:repo) %>
<a href="<%= project[:repo] %>">repo</a>
<% end %>
</p>
<% if project.compiled_content.strip.empty? %>
<p>Dit project kent geen afwijkingen van het algemeen beleid.</p>
<% else %>
<%= project.compiled_content %>
<% end %>

View file

@ -0,0 +1,9 @@
<li>
<% if project.key?(:site) %>
<a href="<%= project[:site] %>"><%= project[:name] %></a>
<% elsif project.key?(:repo) %>
<a href="<%= project[:repo] %>"><%= project[:name] %></a>
<% else %>
<%= project[:name] %>
<% end %>
</li>

View file

@ -1,4 +1,4 @@
<div id="<%= project.identifier.without_ext.split('/')[-1] %>" class="container project content column is-5 is-desktop">
<div id="<%= project[:id] %>" class="container project content column is-5 is-desktop">
<article class="columns is-mobile">
<div class="column is-gapless is-narrow logo-wrapper">
<% if project[:logo_image] %>
@ -12,13 +12,20 @@
<% end %>
</div>
<div class="column">
<p class="title"><a href="<%= project[:site] %>" target="_self"><%= project[:title] %></a></p>
<%= project.compiled_content %>
<% if project[:github] %>
<div><a href="<%= project[:github] %>"><span class="icon"><%= fa('github') %></span> GitHub</a></div>
<% if project.key?(:site) %>
<p class="title"><a href="<%= project[:site] %>" target="_self"><%= project[:name] %></a></p>
<% else %>
<p class="title"><%= project[:name] %></p>
<% end %>
<% if project[:gitlab] %>
<div><a href="<%= project[:gitlab] %>"><span class="icon"><%= fa('gitlab') %></span> GitLab</a></div>
<%= project.compiled_content %>
<% if project.key?(:repo) %>
<% if project[:repo].include?("github.com") || project[:repo].include?("github.ugent.be") %>
<div><a href="<%= project[:repo] %>"><span class="icon"><%= fa('github') %></span> GitHub</a></div>
<% elsif project[:repo].include?("git.zeus.gent") %>
<div><a href="<%= project[:repo] %>"><span class="icon"><%= fa('gitlab') %></span> GitLab</a></div>
<% else %>
<div><a href="<%= project[:repo] %>"> Repo</a></div>
<% end %>
<% end %>
</div>
</article>

View file

@ -6,16 +6,27 @@ module PreprocessHelper
title: 'The event does not include a :title',
location: 'The event should include a :location, a textual description',
locationlink: 'The event does not include a :locationlink, which is a querystring which is used for Google Maps'
},
privacy: {
status: 'A privacy item must include the status of the project'
}
}
end
def allowed_privacy_status
%w(additional general processor development)
end
def check_schema(itemtype, item)
schema = required_attrs[itemtype]
(schema.keys - item.attributes.keys).each do |key|
raise "#{item.identifier}: #{schema[key]}"
end
if itemtype == :privacy && !allowed_privacy_status.include?(item.attributes[:status])
raise "status must be one of #{allowed_privacy_status}, got #{item.attributes[:status]} on #{item[:filename]}"
end
end
def ignore_old_content(*paths)
@ -83,4 +94,24 @@ module PreprocessHelper
report[:date] = Date.strptime(report.identifier.without_ext.split('/').last)
end
end
def update_project_item(projects, project)
id = project.identifier.without_ext.split('/')[-1]
if projects.key?(id.to_sym)
projects[id.to_sym].each do |key, value|
project[key] = value
end
project[:id] = id
end
end
def add_project_metadata
projects = data_from(:projecten)
all_privacy_items.each do |project|
update_project_item(projects, project)
end
all_project_items.each do |project|
update_project_item(projects, project)
end
end
end

12
lib/helpers/privacy.rb Normal file
View file

@ -0,0 +1,12 @@
module PrivacyHelper
def all_privacy_items
@items.find_all('/about/privacy/*')
end
def privacy_projects(status)
all_privacy_items
.select {|project| project[:status] == status}
.sort_by {|project| project[:name]}
end
end

View file

@ -1,5 +1,10 @@
module ProjectsHelper
def all_project_items
@items.find_all('/projects/*')
end
def all_projects
@items.find_all('/projects/*').sort_by{|project| -(project[:priority] || 0)}
all_project_items.sort_by{|project| -(project[:priority] || 0)}
end
end

View file

@ -22,3 +22,4 @@ include TimeHelper
include TileHelper
include AboutHelper
include ReportsHelper
include PrivacyHelper