Compare commits

..

502 commits

Author SHA1 Message Date
redfast00 929c6ec2b3
Merge pull request #473 from ZeusWPI/events_oktober
add events
2021-09-22 23:51:27 +02:00
Sammy Delanghe ae9f764a6e supercomputer 2021-09-22 21:14:12 +02:00
Sammy Delanghe 90cc43c4bf accidental formatting, oops :p 2021-09-22 19:18:39 +02:00
Sammy Delanghe cce28221e5 add events 2021-09-22 19:09:29 +02:00
Bobby 5a6e54ddf7
Merge pull request #472 from ZeusWPI/spelletjesavond/endtime
Add end time for spelletjesavond
2021-09-22 16:19:39 +02:00
Jan-Pieter Baert efee8bd8da
Add end time for spelletjesavond 2021-09-22 15:43:33 +02:00
redfast00 0e9c85d895
Merge pull request #471 from ZeusWPI/new-events
New events
2021-09-20 22:29:52 +02:00
Francis 686ba8edea
add time 2021-09-17 17:01:56 +02:00
Francis e0b181ba1b
fix date 2021-09-17 16:57:01 +02:00
Francis 6b58668da0
save content to file 2021-09-17 16:52:06 +02:00
Francis 97a6a7d305
add spelletjesavond 2021-09-17 16:50:14 +02:00
Francis fd8a4a64a5
add soon events 2021-09-17 16:49:59 +02:00
Francis 9a02183242
add potluck 2021-09-17 16:38:29 +02:00
redfast00 a08b937796
Merge pull request #469 from ZeusWPI/payment-epc-code
Add EPC QR code functionality to contact page
2021-08-28 03:19:33 +02:00
redfast00 f54f49b6b2
Update Tab button 2021-08-27 19:36:55 +02:00
redfast00 dbd4b00967
Make sure people don't expect instant transactions 2021-08-27 08:25:01 +02:00
redfast00 c546c3c7b2
Deduplicate bank number 2021-08-27 08:18:39 +02:00
redfast00 4d823f0a72
Add EPC QR code functionality to contact page 2021-08-27 08:00:22 +02:00
redfast00 c1b947f01b
Merge pull request #468 from ZeusWPI/bank-number
Change bank account
2021-08-26 19:48:07 +02:00
Bobby 63d68cde7f
Change bank account 2021-08-26 19:44:02 +02:00
redfast00 1545dbfc3f
Merge pull request #467 from ZeusWPI/board-2122
Board 21-22
2021-08-07 14:41:44 +02:00
redfast00 c0d57ea4dc
Change current academic year to 2021-2022 2021-08-05 19:33:46 +02:00
redfast00 4d51869474
Add asdf .tool-versions 2021-08-05 19:19:16 +02:00
redfast00 3e80e31d00
Add new board for 2021-2022 2021-08-05 19:18:55 +02:00
Francis 0548cfc367
try ubuntu keyserver for travis build 2021-07-08 00:18:12 +02:00
Francis 077408e3e9
change banner 2021-07-07 23:47:57 +02:00
Francis 87f5d1a806
Add Zeus @Studententuiun 2021-07-07 23:45:28 +02:00
redfast00 4da5c671be
Add chilldag & filmavond 2021-06-27 15:36:59 +02:00
redfast00 2cbf366bcf
Merge pull request #463 from ZeusWPI/content/archive
Vul archieven aan
2021-05-16 23:02:57 +02:00
FKD13 d8e125a16e
Merge pull request #466 from ZeusWPI/update-regels
Update regels
2021-05-14 17:44:32 +02:00
Francis c3abc5f6ef
offline regels 2021-05-14 17:36:20 +02:00
Francis 5ce2911b9e
alcohol <3 2021-05-14 17:28:05 +02:00
Maxime 7b89710647
Merge pull request #465 from ZeusWPI/add-new-kandidates
Verkiezingen: Add ruben and maxime
2021-05-14 16:29:25 +02:00
redfast00 d73031b84d
Remove unnecessary link 2021-05-13 22:33:13 +02:00
mcbloch 0283d8a287 Fix image link 2021-05-13 22:27:26 +02:00
mcbloch e1914bb854 Add ruben and maxime 2021-05-13 21:51:51 +02:00
FKD13 637cf6efbd
Add link to kers 2021-05-13 16:11:21 +02:00
FKD13 dfc1e89e32
Merge pull request #464 from ZeusWPI/fysieke-verkiezingen
Fysieke verkiezingen
2021-05-12 18:25:55 +02:00
Francis bc0ed4549c
extra info 2021-05-12 18:18:05 +02:00
Francis 97c3558ecc
fix spelling and grammar 2021-05-12 17:57:57 +02:00
Francis 8fa1d82d4f
remove unnecessary word 2021-05-12 17:47:32 +02:00
Francis 3ab6a29eeb
add tag 2021-05-12 17:45:02 +02:00
Francis 4ea53c2efd
update event 2021-05-12 17:36:37 +02:00
Niko Strijbol a7e8d93b84
Spelling (thanks midgard) 2021-05-11 10:47:55 +02:00
Niko Strijbol d2b9baefe2
Add blog post 2021-05-10 23:46:15 +02:00
mcbloch aa6e30541d Add end time 2021-05-08 16:28:52 +02:00
Niko Strijbol 2b52b3ae0d
s/rudi/rudy 2021-05-08 00:48:56 +02:00
Niko Strijbol 7606ca030c
Add older data 2021-05-07 23:17:29 +02:00
redfast00 2505a5010e
Thanks Charlotte! 2021-05-06 22:46:00 +02:00
FKD13 1b717638c1
Merge pull request #462 from ZeusWPI/tags-fixed-case
Capitalize tags
2021-05-05 13:00:34 +02:00
Francis 6cb9b0a622
remove redundant map 2021-05-05 12:03:30 +02:00
Francis 84dfdf596f
use preprocessor 2021-05-05 12:01:06 +02:00
Francis 444ce9ae7a
change tags in blog preview 2021-05-04 17:32:58 +02:00
Francis 4b06c40575
capitalize all required parts 2021-05-04 16:22:20 +02:00
Francis 3bda9bc5b2
capitalize tags 2021-05-03 18:30:17 +02:00
redfast00 45927db7a3
Merge pull request #460 from ZeusWPI/fix-silivus
fix silivus
2021-05-02 20:53:35 +02:00
ajuvercr f1cb08f65d fix silivus 2021-05-02 20:52:05 +02:00
redfast00 fe90324114
Fix name 2021-05-02 19:37:57 +02:00
Bobby 41068ee967
Update email 2021-05-01 17:06:18 +02:00
Maxime 7648bc74fa
Merge pull request #458 from ZeusWPI/verkiezingen
Verkiezingen
2021-05-01 16:24:37 +02:00
redfast00 1f7c215591
Fix grammar 2021-05-01 15:02:01 +02:00
redfast00 1e2ce1774e
Add link 2021-05-01 14:44:22 +02:00
mcbloch 8d8882ebb3 Remove mumble, remove soontm 2021-05-01 14:42:04 +02:00
Bobby 5ee2795494
Merge pull request #459 from ZeusWPI/lightningtalks-livestream
add livestream link to lightning talks 2021
2021-05-01 14:33:11 +02:00
Bobby 8588f8e5e4
apply midgar patch 2021-05-01 12:13:44 +02:00
Maxime 9613623ae0
fix markdown link 2021-04-30 19:01:15 +02:00
Bobby 158ccbdfb6
Update 220_lightning_talks_at_home_edition.md
add extra teams link
2021-04-30 11:28:52 +02:00
Melsarion a4df6ec61c
add more explanation 2021-04-30 11:21:19 +02:00
Melsarion 1ed97b106d
add livestream link 2021-04-30 11:18:19 +02:00
mcbloch 547fcda5f0 first draft 2021-04-29 22:12:59 +02:00
redfast00 59329f18ef
Force separate lines 2021-04-27 11:26:39 +02:00
redfast00 0ce501e1f0
Add talk 2021-04-27 11:15:21 +02:00
Melsarion 1a6a516fdc
Merge pull request #457 from ZeusWPI/add-lightning-talks-subjects
add lightningtalks subjects
2021-04-24 21:38:31 +02:00
Melsarion 58d44e592a
better formatting 2021-04-21 17:44:37 +02:00
Melsarion e5dc84212c
add lightningtalks subjects 2021-04-21 17:35:33 +02:00
Maxime 44b1f6032c
Typo 2021-04-18 16:39:12 +02:00
Maxime 39e9f4c949
Add gather town link 2021-04-18 16:37:29 +02:00
Melsarion 7c6bfbcf2f
Merge pull request #456 from ZeusWPI/fix/event-links
Add links to gamejam event and fix gamejam text
2021-04-17 16:10:48 +02:00
Melsarion 41b652776e
add lightningTalks jitsi link 2021-04-17 15:48:58 +02:00
Melsarion f7c22369d7
add title 2021-04-17 15:44:31 +02:00
Melsarion 49ee9650a6
add explanation gathertow link 2021-04-17 15:37:38 +02:00
Melsarion 3872c830d6
fix typo 2021-04-17 15:27:26 +02:00
Melsarion 59d9e9358f
make list be a list instead of one line 2021-04-17 15:17:51 +02:00
Rien Maertens 4af22fe8fc
Add links to gamejam event 2021-04-16 11:01:06 +02:00
mcbloch 5e80cc6ad0 Quick description fix 2021-04-14 18:49:09 +02:00
Bobby 91e2291d4f
Merge pull request #455 from ZeusWPI/events-april-2021
add events april-mei 2021 (HOTOSM, Ludum Dare, Lightning Talks)
2021-04-14 12:31:56 +02:00
Sammy Delanghe ee0ff9d4aa fix format 2021-04-14 12:22:00 +02:00
rdfacq 593963b25f add Lightning Talk text... 2021-04-14 12:02:30 +02:00
rdfacq df85054f2b delete old event files 2021-04-14 12:01:37 +02:00
rdfacq e4ac871c7d Merge branch 'master' into events-april-2021 2021-04-14 12:01:05 +02:00
rdfacq 135e4f1e5b add events april-mei 2021 2021-04-14 11:59:39 +02:00
lorin 6a6876eac0
Add ilinks check to GH Actions 2021-04-06 14:59:28 +02:00
lorin 82094dc840
Merge pull request #454 from ZeusWPI/event/openttd
OpenTTD
2021-04-06 14:48:22 +02:00
lorin bba29acff9
Update 190_openttd.md 2021-04-06 12:14:32 +02:00
lorin a27129a0f6
Update 190_openttd.md 2021-04-06 12:04:14 +02:00
Niko Strijbol e1d1241f81
Soon™ is now 2021-04-06 10:54:55 +02:00
lorin 8be7866db1
BREAKING NEWS: Scientists discover are less days in april than previously thought. 2021-04-06 10:23:12 +02:00
Midgard b4f7f42d81
Add OpenTTD event 2021-04-06 10:23:12 +02:00
Midgard 591f9a7ff5
Update dates for events per latest board meeting 2021-04-06 10:23:11 +02:00
lorin 9684d33648
pls travis pls 2021-04-06 09:54:42 +02:00
lorin 6448339f33
travis pls 2021-04-06 09:49:54 +02:00
lorin b11143eb25
Merge pull request #453 from ZeusWPI/nixos-shell
Use bundix for nixos-shell, and enhancements for darwin
2021-04-06 09:41:08 +02:00
lorin eb7b2634d1
Update main.yml 2021-04-04 23:05:10 +02:00
lorin 70848c14ea
Create main workflow, lets peep this out 2021-04-04 23:03:08 +02:00
Lorin Werthen 5d792b7d79
remove terminal-notifier 2021-04-04 21:59:42 +02:00
Lorin Werthen 660162f5fb
no v8, and terminal-notifier only for darwin 2021-04-04 21:55:46 +02:00
Lorin Werthen f27d70a2b8
use bundix for nixos-shell 2021-04-03 13:59:39 +02:00
lorin e00488b678
Merge pull request #452 from ZeusWPI/fix-travis
Fix ulem.sty error
2021-04-03 13:36:30 +02:00
Lorin Werthen ca172587e8
update pkg name 2021-04-03 13:28:43 +02:00
Lorin Werthen 914df5c16f
this might include ulem.sty 2021-04-03 11:07:57 +02:00
lorin ccb9a150bc
Merge pull request #450 from ZeusWPI/typography
【LATEX】
2021-03-21 14:23:47 +01:00
lorin 1ef705dfa0
Merge pull request #421 from ZeusWPI/historiek-2018-2020
Add historiek for 2017-2018, 2018-2019 and 2019-2020
2021-03-21 14:17:58 +01:00
lorin 68822bf789
Merge pull request #446 from ZeusWPI/nixos-shell
Add shell.nix for easy development with nix
2021-03-21 13:59:11 +01:00
lorin ff3abf60f8
Update shell.nix 2021-03-21 12:09:39 +01:00
Lorin Werthen 133777de11
typography and L A T E X 2021-03-21 10:26:24 +01:00
lorin 2e0c34be56
Merge pull request #448 from ZeusWPI/mobile-css-enhancements
fix some mobile css and balance out the site a bit more
2021-03-21 09:23:56 +01:00
Lorin Werthen bc855375e4
centering issue contact page 2021-03-20 10:15:00 +01:00
lorin 3a2b233f45
Merge pull request #449 from ZeusWPI/fix-katex
Fix KaTeX (math mode) fonts
2021-03-20 09:13:37 +01:00
Melsarion 4fe06c1eb7
update movienight correct information 2021-03-19 16:24:12 +01:00
lorin 889ec230a9
covid -> COVID 2021-03-19 09:21:57 +01:00
Lorin Werthen ac6ccd1eda
fix katex fonts 2021-03-18 22:12:15 +01:00
Lorin Werthen c651c6d4be
remove commented code 2021-03-18 15:05:41 +01:00
Lorin Werthen 911ba6c6bb
fix some mobile css and balance out the site a bit more 2021-03-18 15:02:08 +01:00
Maxime 40c205e028
Merge pull request #447 from ZeusWPI/revert-409-gitmetadata
Revert "added helper function to get modification time from git"
2021-03-18 11:24:09 +01:00
Maxime abd5257e48
Revert "added helper function to get modification time from git" 2021-03-18 11:24:00 +01:00
Rien Maertens 3705235b24
Fix shell.nix for a pure shell 2021-03-18 10:41:42 +01:00
Maxime a3e0a5de85
Merge pull request #409 from ZeusWPI/gitmetadata
added helper function to get modification time from git
2021-03-18 01:47:00 +01:00
mcbloch 4065178451 Fix merge 2021-03-18 01:44:36 +01:00
Maxime 80bb532304
Merge branch 'master' into gitmetadata 2021-03-18 01:43:23 +01:00
Maxime d0a4883d23
Merge pull request #445 from ZeusWPI/add-new-events
Nieuwe events
2021-03-18 01:37:01 +01:00
Midgard 1800385a38 Reviseer filmavond 2021-03-18 01:30:49 +01:00
Midgard 7886f532c5 Reviseer gamenightevent 2021-03-18 01:25:46 +01:00
Rien Maertens 6d68652170
Add shell.nix for easy development with nix 2021-03-18 01:16:50 +01:00
Rien Maertens f90d8193d5
Historiek 2017-2018
OK I WRITE DIS, YUO HAPPY NAO?
2021-03-18 01:14:00 +01:00
Midgard 864e0a0484 Reviseer PlanetWars 2021-03-18 00:34:31 +01:00
mcbloch 52a9ed3cec Self host imgs 2021-03-18 00:25:29 +01:00
mcbloch 2235469053 Add end times 2021-03-18 00:16:49 +01:00
mcbloch c808f14b3d obus beschrijving 2021-03-18 00:12:05 +01:00
mcbloch e50d791da0 did an oopsie, also obus!! 2021-03-18 00:10:15 +01:00
Maxime b02efd90dd
Merge pull request #443 from ZeusWPI/some-tags
Some tags
2021-03-18 00:08:40 +01:00
mcbloch 40dcc4d270 remove empty keys from events 2021-03-18 00:07:35 +01:00
mcbloch 70ff22aef1 Ander startuur, hmmm 2021-03-18 00:03:26 +01:00
mcbloch 676daef76b smoll 2021-03-18 00:00:48 +01:00
mcbloch 2f58e8ca22 hotosm, verkiezingen, eng->nl 2021-03-17 23:57:36 +01:00
mcbloch ad0415a892 Typo 2021-03-17 23:49:02 +01:00
mcbloch a86dfb87d1 Formatting and tags 2021-03-17 23:36:31 +01:00
mcbloch 76a57784e3 remove commented images 2021-03-17 23:24:32 +01:00
mcbloch c0f514fb0e Small additions for movienight 2021-03-17 23:24:03 +01:00
mcbloch f98eae078c Tussentijdse commit 2021-03-17 23:19:19 +01:00
Maxime e00d552007
Some tags 2021-03-15 20:46:29 +01:00
Maxime 8630721d75
Merge pull request #442 from ZeusWPI/fix-start-planetwars-event
Fix start planetwars event
2021-03-06 16:12:31 +01:00
Maxime 28ca8de833
Update 150_planetwars_hackathon.md 2021-03-06 16:07:24 +01:00
Bobby ce5aae5001
Merge pull request #441 from ZeusWPI/dnd2
Dnd2
2021-03-04 11:15:29 +01:00
Sammy Delanghe 889189353e remove dnd soon tm 2021-03-03 14:40:14 +01:00
lorin 16a8ff179a
vinden -> te vinden 2021-03-03 12:35:26 +01:00
lorin e01f00d446
strikethrough 2021-03-03 12:28:29 +01:00
Sammy Delanghe 25084a2cf4 Merge remote-tracking branch 'origin/master' into dnd2 2021-03-03 12:14:45 +01:00
Sammy Delanghe 7eb7cfef3f add dnd2 event 2021-03-03 12:14:14 +01:00
Bobby 26c288dd9d
Merge pull request #440 from ZeusWPI/planetwars-event
Voeg planetwars toe, en alle soontm's
2021-03-03 12:00:34 +01:00
mcbloch 8d4f7ac8de add forgotten simplebot link 2021-03-02 20:10:42 +01:00
mcbloch ebbe90d48c Voeg planetwars toe, en alle soontm's 2021-03-02 20:03:37 +01:00
lorin 12ad4eed43
Merge pull request #438 from ZeusWPI/fix-286
reduce size of titles and text when mobile, fixes #286
2021-03-02 14:14:57 +01:00
Lorin Werthen 432ac3b83a reduce size of titles and text when mobile, fixes #286 2021-03-02 11:43:06 +01:00
lorin e2e2dfea74
Merge pull request #434 from ZeusWPI/katex
Add Katex (Math mode) support
2021-03-01 08:53:29 +01:00
FKD13 fb73514ee4
Merge pull request #436 from ZeusWPI/update-submodules
update drive
2021-02-28 16:20:22 +01:00
Francis 2e30b3c951
update drive 2021-02-28 16:09:16 +01:00
Maxime ad07fc60c9
Change travis badge to new url 2021-02-28 15:14:00 +01:00
lorin e2d34e4cb4
Merge pull request #432 from ZeusWPI/blogpost-refactor-and-scss-fix
Redesign blogpost previews
2021-02-28 15:09:46 +01:00
Lorin Werthen 4e08e5ae20 take comments into account 2021-02-28 10:53:17 +01:00
Lorin Werthen cffc7fa12c add extra event 2021-02-27 23:16:58 +01:00
Lorin Werthen bc44220db3
add katex support 2021-02-26 15:24:40 +01:00
Lorin Werthen 857002b7d7
fix small css issue 2021-02-26 13:24:57 +01:00
Lorin Werthen b140a9c365
thin -> puma 2021-02-26 12:32:02 +01:00
Lorin Werthen 5ce4194199
fix spacing issue and add a bit more flair 2021-02-26 12:22:29 +01:00
Lorin Werthen 584184da7a
fix homepage for blogpost previews 2021-02-25 12:55:30 +01:00
Lorin Werthen dc2794bb98
Redesign the blogpost previews and fix a bug pertaining to scss compilation. Fixes #302 2021-02-25 12:33:02 +01:00
redfast00 ceac9fc66d
Add Arthur to supporting members 2021-02-23 11:51:40 +01:00
Melsarion 2cf48a2cc9
add movie to watch on movienight 2021-02-17 12:27:57 +01:00
FKD13 4efc03d370
Merge pull request #431 from ZeusWPI/movienight
add movienight
2021-02-15 15:56:09 +01:00
FKD13 597a9a1f57
fix double extention 2021-02-15 15:49:35 +01:00
FKD13 414b478f4b
fix banner 2021-02-15 15:43:06 +01:00
FKD13 2fc34d0a56
add movienight 2021-02-15 15:40:37 +01:00
FKD13 b09515c990
Merge pull request #430 from ZeusWPI/hashcode-2021
Add hashcode 2021 event
2021-02-14 15:21:47 +01:00
FKD13 6192e558d3
Add hashcode 2021 event 2021-02-14 15:15:46 +01:00
redfast00 0aaebb7fb8
Merge pull request #428 from ZeusWPI/add-lorin-sponsor
add me as a sponsor
2021-01-13 16:02:55 +01:00
redfast00 a7874853a8
Use our own 'CDN' 2021-01-13 16:02:01 +01:00
Lorin Werthen b90b23e4cb
add me as a sponsor 2021-01-13 12:32:32 +01:00
redfast00 bad5124e76
Merge pull request #427 from ZeusWPI/update-photon-link
update photon link to https://photon.komoot.io
2021-01-12 14:24:07 +01:00
Lorin Werthen 667cb87f36
update photon link to https://photon.komoot.io 2021-01-12 00:30:04 +01:00
redfast00 e4eca33b70
Fix yaml 2021-01-11 12:22:07 +01:00
redfast00 dd51589b01
Fix description pietervdvn 2021-01-11 12:17:07 +01:00
redfast00 022479c8c4
Add nickyname, tleilaxu 2021-01-11 12:06:53 +01:00
redfast00 cc4ed04474
Add michilus 2021-01-08 20:28:33 +01:00
redfast00 dcf0bdb82b
Remove clonefile 2021-01-08 20:28:33 +01:00
redfast00 77942918d4
Merge pull request #426 from ZeusWPI/shuffle-sponsoring-members
Shuffle sponsoring members
2021-01-08 16:36:34 +01:00
redfast00 ac4401730c
Shuffle sponsoring members 2021-01-08 16:30:18 +01:00
redfast00 169fb28e28
Merge pull request #425 from ZeusWPI/remove-assistent
Remove assistant from privacy policy
2021-01-07 23:38:36 +01:00
Niko Strijbol 4f40574eb0
Remove assistant from privacy policy 2021-01-07 23:35:53 +01:00
redfast00 9d194f3602
Fix Bauke's instagram 2021-01-07 23:24:31 +01:00
redfast00 55b8d9f0d2
Meer roze 2021-01-07 23:22:34 +01:00
redfast00 31a56df89a
Add Bauke 2021-01-07 23:02:47 +01:00
redfast00 406f7cf781
Add Feli 2021-01-07 18:15:37 +01:00
redfast00 c362ea457f
Fix Wout 2021-01-07 17:58:17 +01:00
redfast00 2070b285f7
Merge pull request #424 from ZeusWPI/ruby-3
update to ruby 3.0.0
2021-01-07 16:47:17 +01:00
Lorin Werthen c49ac68fed
remove clonefile 2021-01-07 16:40:38 +01:00
redfast00 d6cbdcc4e8
Sponsoring members 2021 2021-01-07 16:10:36 +01:00
Lorin Werthen 4661d0b3a3
remove rvm listing in travis.yml, then it uses .ruby-version 2021-01-06 00:36:58 +01:00
Lorin Werthen 0e26c45ffe
update to ruby 3.0.0 2021-01-06 00:24:20 +01:00
Bobby eb3aa8b9b6
Update wensen2020.md
spelling error, corrected by Midgard :)
2020-12-19 22:11:37 +01:00
Melsarion 87e80e27c4
Merge pull request #423 from ZeusWPI/PandJ-blogpost
P&J blogpost
2020-12-19 20:44:21 +01:00
Melsarion bb39edc631
fix typo, add links for mattermost
geen links voor Discord omdat de leeflengte daarvan nog niet zeker is
2020-12-19 20:26:03 +01:00
Melsarion 086acef651
fix newlines
ik vergeet altijd dat markdown enters negeert :(
2020-12-19 20:06:51 +01:00
Melsarion 75eef1c408
fix typo 2020-12-19 20:02:44 +01:00
rdfacq 1a6bc966e8 initial PAndJ blogpost 2020-12-19 19:57:14 +01:00
Robbe Van Herck 4acc8d76a7
Add historiek for 2018-2019 and 2019-2020 and a TODO for @rien 2020-12-10 23:02:02 +01:00
Melsarion 3dea62ecaa
Merge pull request #420 from ZeusWPI/fix-text-P&J
fix P&J event text
2020-12-06 11:29:46 +01:00
Melsarion 3246c0c5f4
fix small typo 2020-12-06 11:25:19 +01:00
Melsarion eee7b16668
fix text newlines 2020-12-06 11:15:22 +01:00
Maxime a60737d75f
Merge pull request #419 from ZeusWPI/add_pj_codenight
Publishing p&j codenight.
2020-12-06 01:10:51 +01:00
Maxime 025b65bba2
fix lijst in recept 2020-12-06 00:54:48 +01:00
Maxime 7f859d2365
Fix typos, sync met codimd 2020-12-06 00:41:28 +01:00
Maxime 75f20eaa83
Make description readable 2020-12-06 00:19:54 +01:00
Maxime 55b76a4376
fix \ 2020-12-06 00:12:45 +01:00
Maxime 677891b3c8
Add images 2020-12-06 00:09:40 +01:00
Sammy Delanghe c70827e83d Publishing p&j codenight.
(cherry picked from commit e3c2126333)
2020-12-05 23:50:52 +01:00
Sammy Delanghe a488d8bd9d Revert "Publishing p&j codenight."
This reverts commit e3c21263
2020-12-05 23:49:01 +01:00
Sammy Delanghe e3c2126333 Publishing p&j codenight. 2020-12-05 23:22:02 +01:00
Bobby 84d064aa44
Merge pull request #418 from ZeusWPI/events/dnd
Events/dnd
2020-11-19 11:30:52 +01:00
Sammy Delanghe fd22bbfdf6 Header background for dnd event 2020-11-19 11:28:42 +01:00
redfast00 c2a1000a29
Merge pull request #411 from ZeusWPI/events/tags
Events/tags
2020-11-19 04:58:38 +01:00
redfast00 f8a286da25
Merge pull request #417 from ZeusWPI/security.txt
Add responsible disclosure policy
2020-11-19 04:53:30 +01:00
Sammy Delanghe 779d6959ae update readme for mediafile upload 2020-11-18 21:45:49 +01:00
Sammy Delanghe 03fc7c0f7c Add dnd event 2020-11-18 21:41:08 +01:00
Bobby b27732cdfc
Merge pull request #416 from ZeusWPI/fix/latex-maybe
Fix Latex
2020-11-18 20:48:55 +01:00
Niko Strijbol 78f8b09907
Maybe fix Latex 2020-11-17 09:11:57 +01:00
redfast00 f8a91d45e1
Add responsible disclosure policy 2020-11-17 05:12:14 +01:00
redfast00 ed724929e9
Add .well-known/security.txt 2020-11-17 05:08:03 +01:00
redfast00 61b559c28d
Add iepoev as sponsoring member 2020-11-15 20:58:57 +01:00
redfast00 1e868f041e
Merge pull request #413 from ZeusWPI/update-lan-event
Update lan event
2020-10-28 18:48:45 +01:00
Maxime d30740330c
Update 06_lan.md 2020-10-28 14:31:54 +01:00
FKD13 47c3c3d627
Merge pull request #412 from ZeusWPI/add-lan
Good Work!
2020-10-27 14:52:22 +01:00
Francis bb6c53c1d5
remove image 2020-10-27 14:05:34 +01:00
Francis c0b524f8ff
add banner 2020-10-27 13:22:06 +01:00
Francis 2cc807c86d
update lan text 2020-10-27 13:14:49 +01:00
redfast00 f68d46b1fe
Fix typo 2020-10-26 09:36:04 +01:00
Francis 22bbbdc874
remove end time 2020-10-19 00:23:52 +02:00
Francis 5246eeb912
remove prizes for now 2020-10-19 00:22:47 +02:00
Francis faf15b5904
add location 2020-10-19 00:08:04 +02:00
Francis 71e531b4a2
fix day 2020-10-19 00:02:15 +02:00
Maxime 6017017b76
Merge pull request #410 from ZeusWPI/JensTimmerman-patch-1
fix typo in README.md
2020-10-19 00:02:14 +02:00
Francis 1c3cedde3d
update lan 2020-10-18 23:57:20 +02:00
Melsarion 17b2695896
Update 05_exofru.md 2020-10-17 02:40:55 +02:00
ajuvercr beecd1c5af Add search event on tag 2020-10-13 12:01:47 +02:00
Jens Timmerman 0fa066fb1b added 'laast aangepast' AND 'geschreven op' 2020-10-13 00:37:54 +02:00
Jens Timmerman 4292cb42a7 no more errors when a blog has no created_at line, parse str as date instead of datetime 2020-10-13 00:19:42 +02:00
Jens Timmerman 804c0b1038 only show date, not hours, show 'laast aangepast op' instead of geschreven op 2020-10-13 00:00:13 +02:00
Jens Timmerman fbc76e8f7d fixes 2020-10-12 22:52:40 +02:00
Jens Timmerman a5ec5ca286
fix typo in README.md
nanon -> nanoc
2020-10-12 22:39:22 +02:00
redfast00 d52fd267fc
Test Travis 2020-10-12 22:20:40 +02:00
Jens Timmerman 4b4a938d7b added helper function to get modification time from git 2020-10-12 22:07:54 +02:00
ajuvercr 7dc3816ab0 fix deploy check 2020-10-12 20:23:23 +02:00
ajuvercr e72014b40f Add tags filter to blog posts 2020-10-12 19:40:15 +02:00
Melsarion fab45a4e57
Merge pull request #406 from ZeusWPI/add-codenights-october
Add events for whole semester
2020-10-11 15:04:47 +02:00
Melsarion 9536595dc1
Update 04_hacktoberfest.md 2020-10-11 14:56:04 +02:00
Melsarion 77ba97f09b
Update 06_lan.md 2020-10-11 14:55:49 +02:00
Melsarion f2ddfcdc0d
Update 05_exofru.md 2020-10-11 14:55:15 +02:00
Melsarion 4468128828
Update 04_hacktoberfest.md 2020-10-11 14:55:02 +02:00
Melsarion e2704d13e6
Update 06_lan.md 2020-10-11 14:44:54 +02:00
Melsarion 9a7b5ff20f
Update 05_exofru.md 2020-10-11 14:44:41 +02:00
Melsarion fd92c0b964
Update 04_hacktoberfest.md 2020-10-11 14:44:29 +02:00
Melsarion 440db4d573
Update 06_lan.md 2020-10-11 14:30:35 +02:00
Melsarion c78fa3e264
Update 05_exofru.md 2020-10-11 14:30:03 +02:00
Melsarion a4a6b0a1a7
Update 04_hacktoberfest.md 2020-10-11 14:29:44 +02:00
Melsarion 0c857dcd27
Update 05_exofru.md 2020-10-11 14:21:25 +02:00
Melsarion 4de2326a55
Update 04_hacktoberfest.md 2020-10-11 14:15:45 +02:00
Melsarion 97007cbc6d
Update 04_hacktoberfest.md 2020-10-11 14:08:07 +02:00
Melsarion b562aa4ef0
Update 12_c_and_d_codenight.md 2020-10-11 13:43:50 +02:00
Melsarion 5550a5e13c
Update 10_workshop_electronics.md 2020-10-11 13:40:44 +02:00
Melsarion ad68b8e906
Update 06_lan.md 2020-10-11 13:38:35 +02:00
Melsarion 314327615d
Update 09_zeustp.md 2020-10-11 13:37:50 +02:00
Melsarion 9623172dd8
Update 08_talk.md 2020-10-11 13:34:18 +02:00
Melsarion 34f6bc7137
Update 08_talk.md 2020-10-11 13:33:50 +02:00
Melsarion b144c07039
Update 08_talk.md 2020-10-11 13:33:32 +02:00
Melsarion 04b7045efa
Update 07_codeweek.md 2020-10-11 13:27:03 +02:00
Melsarion bdbe75951b
Update 06_lan.md 2020-10-11 13:23:39 +02:00
Melsarion d40f38c716
Update 05_exofru.md 2020-10-11 13:15:26 +02:00
Melsarion 0de3583a00
Update 04_hacktoberfest.md 2020-10-11 13:03:51 +02:00
mcbloch 1c2fcf74f5 Remove TBD in descriptions 2020-10-11 12:42:22 +02:00
redfast00 9b44d288d0
Fix description for hacktoberfest 2020-10-11 07:54:43 +02:00
redfast00 54e159e083
Correct typo 2020-10-11 07:53:05 +02:00
mcbloch c9f25268cf Add option for custom header text background color 2020-10-11 05:31:28 +02:00
mcbloch 02d1c53388 Add endtime for esoteric codenight 2020-10-11 05:08:45 +02:00
mcbloch 6e10161b71 Add endtime for hacktobercodenight 2020-10-11 05:07:27 +02:00
mcbloch 197c7d9084 Add endtime render to event 2020-10-11 05:07:08 +02:00
mcbloch fc5a3ca018 Add some other images 2020-10-11 04:44:08 +02:00
mcbloch 3861b1d03a add xkcd 2020-10-11 04:29:20 +02:00
mcbloch f42152a720 fix zeustp week 2020-10-11 04:23:42 +02:00
mcbloch 13161c9d04 nice and ordered 2020-10-11 04:21:40 +02:00
mcbloch c4d6d81812 Add other soontm's 2020-10-11 04:19:02 +02:00
mcbloch 85797fcb0e I should know this 2020-10-11 04:09:38 +02:00
mcbloch f24298ffac fix time 2020-10-11 04:03:18 +02:00
mcbloch ffff00c77b new esoteric iamge 2020-10-11 04:01:26 +02:00
mcbloch f1ca5c9cce forgot soon 2020-10-11 03:56:31 +02:00
mcbloch 7ee0b31f4e add zeustp soontm 2020-10-11 03:56:12 +02:00
mcbloch 6d8aa8e02e add sensible links 2020-10-11 03:49:47 +02:00
mcbloch 96ee715c8f add reservations link 2020-10-11 03:41:55 +02:00
mcbloch 5c9c4226b0 add hacktoberfest and add exotic data 2020-10-11 03:38:21 +02:00
Bobby 9ba7ddd7d8
Merge pull request #405 from ZeusWPI/add-pta
Add pta
2020-09-29 16:10:03 +02:00
Francis ffccc838ab
rephrase sentence 2020-09-28 13:21:18 +02:00
Francis e7af2cdc67
add md links 2020-09-28 13:08:55 +02:00
Francis dee8e6593f
add pta event 2020-09-28 13:06:38 +02:00
Robbe Van Herck ee4d2791fb
Better deploy instructions in README.md 2020-09-23 10:05:16 +02:00
Melsarion 6e3587f215
Update lip2.md 2020-09-21 19:28:38 +02:00
Melsarion 0752ccd3fc
Update lip1.md 2020-09-21 19:28:24 +02:00
redfast00 31d93ac4a5
Merge pull request #404 from ZeusWPI/soontm
Update soon tm events
2020-09-17 21:45:16 +02:00
redfast00 a4688db737
Update soon tm events 2020-09-17 21:14:24 +02:00
redfast00 bdf39400d3
Merge pull request #403 from ZeusWPI/add-lip-2020
add the 2 linux install parties for this year
2020-09-17 20:30:19 +02:00
Hannes Klinckaert 5babf7aea5 I forgot to press save in the editor 2020-09-17 20:27:39 +02:00
Hannes Klinckaert d68f3c09df add links to gandalf pages 2020-09-17 20:26:27 +02:00
Hannes Klinckaert af72ba6114 fix typo 2020-09-17 15:01:47 +02:00
Hannes Klinckaert 2a36298bf2 add the 2 linux install parties 2020-09-17 14:43:32 +02:00
lorin 176139da59
Speed up compilation of html pages in production (#401)
* speed up compilation of html pages in production

* who needs all of that latex

* add latex-fonts-recommended

* math package

* how far can we push this

* just trimming off some little excess

* never mind, good enough
2020-08-26 11:44:49 +02:00
redfast00 9f7d879236
Merge pull request #400 from ZeusWPI/fix/390
Add command event, update broken locations and support predefined locations
2020-08-13 13:54:52 +02:00
Niko Strijbol 9d1781e3d8
Change existing locations 2020-08-12 15:52:04 +02:00
Niko Strijbol 22aae73a93
Add command for event 2020-08-12 15:52:04 +02:00
Niko Strijbol afae88656a
Support predefined locations
The service that looks up the locations changes sometimes. Therefore it
is useful to have some "predefined" locations, which we can change in
one place; the format is "$NAME". Since the metadata is yaml, this
exclude the nice "#NAME" or even ":NAME".
2020-08-12 15:52:00 +02:00
lorin 918cc9b08b
Merge pull request #398 from ZeusWPI/updates
General updates
2020-08-12 09:32:41 +02:00
redfast00 4b48965d14
Merge pull request #399 from ZeusWPI/update-pandoc
Update Pandoc (Fixes #380)
2020-08-07 16:05:55 +02:00
lorin f6bee15d51
Fixes #380 2020-08-07 09:27:31 +02:00
redfast00 4fb0873fd2
Merge pull request #397 from ZeusWPI/fix-subnavigation
Fix css and refactor subnavigation bar
2020-08-06 16:58:36 +02:00
Lorin Werthen 39c85efb31 General updates 2020-08-06 15:32:22 +02:00
Lorin Werthen 57593f546e Fix css and refactor subnavigation bar 2020-08-06 15:02:14 +02:00
redfast00 b1dfe8ea4c
Merge pull request #396 from ZeusWPI/privacy/kers
Add KeRS to privacy policy + improvements
2020-07-27 14:41:25 +02:00
Midgard de4fca5679
Add abbr and language attributes in privacy policy
This commit gives some abbreviations where expansion is useful a
wrapping <abbr title="…"></abbr>.

The site's global language is Dutch. This commit marks English text in
the privacy policy as such with the lang="en" attribute.
2020-07-26 17:31:32 +02:00
Midgard a8eb247ff1
Improve language
Some typo corrections and minor rephrasings
2020-07-26 17:21:48 +02:00
Niko Strijbol 0f851640dc
Update date 2020-07-26 15:35:04 +02:00
Niko Strijbol 89f32a6750
Suggestions 2020-07-26 00:09:32 +02:00
Niko Strijbol 33197ff0e8
Add KERS to privacy policy 2020-07-25 23:51:57 +02:00
redfast00 1e353fd5e1 Wij coden voort 2020-07-22 19:19:17 +02:00
redfast00 4fb2e9e349
Merge pull request #395 from ZeusWPI/bestuur2021
Bestuur 20-21
2020-07-12 20:13:36 +02:00
Niko Strijbol a3f090abb8
Spelling
Corona is met kleine letter [1] en er is niet echt een reden om een
koppelteken te gebruiken[2].

[1]: https://onzetaal.nl/taaladvies/corona/
[2]: https://vrttaal.net/taaladvies-spelling/corona
2020-07-12 13:37:45 +02:00
redfast00 cf86711b9b Split supporting member years and academic year 2020-07-12 11:22:00 +02:00
lorin 97955c57fc
foei 2020-07-10 21:50:12 +02:00
Robbe Van Herck 33700ec714 Remove Klicks 2020-07-06 17:06:55 +02:00
Robbe Van Herck b6ac7c329b Add new board blogpost 2020-07-06 16:44:24 +02:00
Robbe Van Herck b948388036 Update for new academic year and new board 2020-07-06 16:14:50 +02:00
Robbe Van Herck 76d12039fc Add default message when no supporting members are found 2020-07-06 16:14:29 +02:00
redfast00 eeeeeeea1c VLEOR 2020-07-04 21:31:06 +02:00
redfast00 1ef012f109
Merge pull request #394 from ZeusWPI/niknetniko-patch-1
Improvements to privacy policy
2020-07-01 02:13:48 +02:00
Niko Strijbol 8953b0a4dd
Correct sentence
Say no to tussentaal
2020-07-01 00:32:29 +02:00
Niko Strijbol 2a8fc4e982
Update blokmap information 2020-06-30 23:41:49 +02:00
Niko Strijbol 1e06dfed17
Fix awkward language 2020-06-30 23:41:48 +02:00
Niko Strijbol fffd55916c
Mention public quotes 2020-06-30 23:41:43 +02:00
Niko Strijbol 5666bbe2ae
s/OpenStreetMaps/OpenStreetMap/ 2020-06-30 23:22:21 +02:00
Niko Strijbol 3b31269d3b
Update date in privacy policy 2020-06-30 23:16:25 +02:00
Niko Strijbol 75ce86f44c
Improve clarity
As suggested:

- Indicate Crashlytics is from Google
- Correct wrong term
2020-06-30 23:15:08 +02:00
redfast00 ac4564637f
Merge pull request #393 from ZeusWPI/Jan-PieterBaert-patch-1
Fix typo
2020-06-23 21:56:17 +02:00
redfast00 ed611b25b5
Merge pull request #392 from ZeusWPI/Fix-gemiste-kans
Fix gemiste kans in verkiezingen.md
2020-06-23 21:55:10 +02:00
Jan-Pieter Baert 439a4b76b9
Fix typo 2020-06-23 21:51:03 +02:00
redfast00 2493019d8f
Update dependencies, improve wording of Tab message 2020-06-23 21:37:17 +02:00
Tom Naessens e44620304d
Fix gemiste kans in verkiezingen.md 2020-04-28 20:45:18 +02:00
Robbe Van Herck 85a231dbb3
Merge pull request #391 from ZeusWPI/verkiezingen2020
Zeus Zoek Bestuur!
2020-04-28 20:20:54 +02:00
Robbe Van Herck 27db4c0bab
Update content/events/19-20/verkiezingen.md
Co-Authored-By: Niko Strijbol <strijbol.niko@gmail.com>
2020-04-27 23:34:20 +02:00
Robbe Van Herck 18b092d4aa Fix remarks 2020-04-27 23:11:17 +02:00
Robbe Van Herck 494991d079 Add post about elections 2020-04-27 22:43:48 +02:00
FKD13 920b3eefe0
Merge pull request #389 from ZeusWPI/fix/ctf-link
1400! fix broken link
2020-04-05 20:27:19 +02:00
Francis 56e4f66209
1400! fix broken link 2020-04-05 20:27:09 +02:00
redfast00 d622e9d4e4
Merge pull request #388 from ZeusWPI/fix/ctf-link
fix 2 links
2020-04-05 20:09:24 +02:00
Francis 4c288df749
fix 2 links 2020-04-05 20:09:14 +02:00
redfast00 a086cb7c83
Fix CTF banner 2020-04-05 14:15:15 +02:00
redfast00 3eab0a75e9
Merge pull request #387 from ZeusWPI/rcectf
Add RCECTF
2020-04-05 00:44:36 +02:00
redfast00 f8bd8ed906
Add RCECTF 2020-04-04 17:40:01 +02:00
Robbe Van Herck 37ef92b050 Clarification, just so nobody gets confused and thinks this is real because they didn't look at the date and therefor thought this was an actual descision the board made at that specific date. 2020-04-03 18:57:33 +02:00
Maxime a395e45465
Merge pull request #386 from ZeusWPI/update/godot-event
Fix godot event
2020-04-03 18:04:49 +02:00
Maxime Bloch a0f045da88
re-add facebook event 2020-04-03 17:51:00 +02:00
Maxime Bloch d4609fdf24
fix date 2020-04-03 17:48:01 +02:00
Maxime fe96631da5
Merge pull request #385 from ZeusWPI/update/godot-event
WIP: Re-add godot event
2020-04-03 15:43:53 +02:00
Maxime 56bda5bded
Remove old facebook event
can be added later when the new fb event is made
2020-04-03 15:13:50 +02:00
Maxime 650cdddb12
re-add location, it's required 2020-04-03 02:51:37 +02:00
Maxime ff1812906a
remove location 2020-04-03 02:32:54 +02:00
Maxime e375641424
remove soon tag 2020-04-03 01:53:49 +02:00
Maxime b591bd8f6b
Re-add godot event 2020-04-03 01:33:41 +02:00
Robbe Van Herck bad9869217 verkeerde datum 2020-04-01 12:18:21 +02:00
Robbe Van Herck 79e583a940 Verkiezingen update 2020-04-01 12:13:11 +02:00
redfast00 073c69fc3f
Merge pull request #384 from ZeusWPI/wanparty-updates
Small wanparty updates
2020-03-27 14:58:46 +01:00
Maxime 039aae902d
Update mumble server. 2020-03-27 01:07:21 +01:00
redfast00 6e2b08ae20
Merge pull request #381 from ZeusWPI/lan-naar-wan
Update WAN-party
2020-03-26 23:04:45 +01:00
redfast00 dee04b8cae
Merge pull request #383 from ZeusWPI/fix/382
Don't hide everything if there is no locationlink
2020-03-24 20:05:22 +01:00
Niko Strijbol 39888c6ac4
Don't hide all text if there is no locationlink 2020-03-24 18:46:24 +01:00
Robbe Van Herck c843d7e1f3 Update WAN-party 2020-03-24 17:22:06 +01:00
Robbe Van Herck 5cb8f60cc5 Cancel Mapathon 2020-03-12 18:27:39 +01:00
Robbe Van Herck 8a0794e976 Corona update 2020-03-11 22:54:25 +01:00
Arne Bertrand 256282c86b
Merge pull request #379 from ZeusWPI/mini-lan
added mini-lan md file
2020-03-06 21:29:14 +01:00
Arnhoudt b3a200d997
Update mini-lan.md 2020-03-06 16:44:29 +01:00
Arnhoudt 721feb8c99
Update mini-lan.md 2020-03-06 16:32:40 +01:00
kindtanton 72559cb8f5 added mini-lan md file 2020-03-05 19:05:43 +01:00
redfast00 aaaaaaae4e Fix duplicate events 2020-02-25 01:05:23 +01:00
Robbe Van Herck 3fb32d59f8 Add mapathon 2020-02-26 18:24:33 +01:00
redfast00 d1e898f341
Merge pull request #378 from ZeusWPI/correct-frontpage-order
Fix correct front-page order of events
2020-02-17 00:48:10 +01:00
redfast00 9c92b4ca45
Fix correct front-page order of events 2020-02-17 00:32:23 +01:00
Robbe Van Herck 57d20dddea
Merge pull request #377 from ZeusWPI/fix/robbe7730
Minor fixes
2020-02-14 15:06:42 +01:00
Robbe Van Herck 92fe120c5e Fixes on events 2020-02-14 14:45:23 +01:00
redfast00 78fea79945
Merge pull request #376 from VincentVanlaer/ulyssis-jobavond
ULYSSIS jobavond fixes
2020-02-13 13:54:53 +01:00
Vincent Vanlaer 26b8493826 Add register link 2020-02-13 13:44:29 +01:00
Vincent Vanlaer 610ba28783 Fix spelling of ULYSSIS 2020-02-13 01:24:11 +01:00
Vincent Vanlaer 86d68fdd8c Switch to new banner made to fit many resolutions 2020-02-13 01:23:00 +01:00
Arne Bertrand 175a8ca5d4
Merge pull request #375 from ZeusWPI/events_2020
Add new events for 2020
2020-02-12 08:51:48 +01:00
abeforgit d0397311d2 Add facebook events 2020-02-11 12:54:40 +01:00
abeforgit c1e9eb6ee7 Add new events for 2020 2020-02-10 23:37:12 +01:00
redfast00 63785a5d75
Fix typo 2020-02-03 12:19:34 +01:00
redfast00 2c4977f843
Merge pull request #373 from ZeusWPI/update-reports
Use the latest commit for submodules
2020-02-03 11:42:40 +01:00
redfast00 a0b85958ff
Merge pull request #374 from ZeusWPI/fix/codeclimate
Fix codeclimate
2020-02-03 11:42:14 +01:00
redfast00 83f1ec354b
Merge pull request #367 from ZeusWPI/sustainability_blog
sustainability blogpost
2020-02-03 11:41:06 +01:00
Niko Strijbol 893869a5b9
Use latest rubocop in codeclimate 2020-02-02 17:19:32 +01:00
Niko Strijbol a3f5b96238
Use the latest commit for submodules
According to the internet, this will take the latest commit from the
branch specified in the .gitmodules file.
2020-02-02 17:07:19 +01:00
Maxime Bloch 7ee1bc3bb7
fix wrong link types. Round are interal, should be squared 2020-01-29 05:04:55 +01:00
Maxime Bloch 7354b573b1
typo 2020-01-29 04:39:24 +01:00
Maxime b00dc2b600
Apply suggestions from code review
Co-Authored-By: Niko Strijbol <strijbol.niko@gmail.com>
2020-01-29 04:37:39 +01:00
Maxime Bloch 7a1bb8b176
specifieer werkgroep 2020-01-29 03:49:49 +01:00
Maxime Bloch e1ec4e35a9
betere zinsconstructie? 2020-01-29 03:46:58 +01:00
Maxime Bloch 8f262c8de2
lil change 2020-01-29 03:45:11 +01:00
Maxime Bloch b3b790b8ce
add links to external parties 2020-01-29 03:43:50 +01:00
Maxime Bloch 745651e890
vermijd hetzelfde woordgebruik 2020-01-29 03:42:02 +01:00
Maxime Bloch 60ed6eed4a
typo 2020-01-29 03:40:39 +01:00
Maxime Bloch af209c42b5
Add larger intro about teamtrees 2020-01-29 03:39:55 +01:00
redfast00 0f939c09d7
Merge pull request #369 from ZeusWPI/fix/disallow-robots
Allow less crawling
2020-01-29 01:46:26 +01:00
redfast00 936197f430
Update content/blog/19-20/sustainability_blog.md
Co-Authored-By: Niko Strijbol <strijbol.niko@gmail.com>
2020-01-29 01:45:13 +01:00
Felix Van der Jeugt 3d311ac8e6
Allow crawling the sponsoring members page 2020-01-27 21:28:03 +01:00
redfast00 a30e492f0b
Merge pull request #372 from ZeusWPI/fix/rien
Fill in description
2020-01-25 20:54:13 +01:00
Rien Maertens 4106d124b5
Fill in description because the current board did not. 2020-01-25 20:38:05 +01:00
redfast00 1094982571
Merge pull request #371 from ZeusWPI/sustainability_blog_suggestion
some small edits, looks good yo
2020-01-22 21:28:51 +01:00
Sammy Delanghe 1555eb08ac some small edits, looks yo 2020-01-22 19:31:19 +01:00
Felix Van der Jeugt e4a58127f0
Also allow plain home page 2020-01-17 19:31:11 +01:00
Felix Van der Jeugt 75c8e6af92
Allow crawling the home page 2020-01-16 15:50:17 +01:00
redfast00 a5bab38384
Merge pull request #370 from ZeusWPI/remove-useless
Remove unused quote script
2020-01-16 11:04:43 +01:00
Felix Van der Jeugt 5c5a2275f2
Use sitemap to allow more pages 2020-01-16 09:24:05 +01:00
redfast00 3e617e93e4
Remove unused quote script 2020-01-16 09:18:50 +01:00
Felix Van der Jeugt 785c927834
Allow less crawling 2020-01-16 09:02:52 +01:00
redfast00 60d03a8920
Merge pull request #361 from ZeusWPI/events/soon
Events/soon
2020-01-14 12:49:20 +01:00
redfast00 3c5741eacb
Merge pull request #368 from ZeusWPI/events/soon-fixes
Fixes for events/soon
2020-01-13 14:42:07 +01:00
Niko Strijbol d8323ecfef
Don't put soon events in ical 2020-01-13 14:34:12 +01:00
Niko Strijbol 93aef1e251
No parentheses when no params 2020-01-13 14:31:55 +01:00
Niko Strijbol 647d942412
Html improvements:
- Use partial instead of inline
- Correct background colour if event has none
- Don't use <i> tag, use <em>
- Use UTF8 ™ character
2020-01-13 14:31:30 +01:00
Niko Strijbol d1ab7c73d1
Fix syntax error due to merge 2020-01-13 14:11:13 +01:00
redfast00 6f5753d493
Merge branch 'master' into events/soon 2020-01-13 09:47:22 +01:00
Maxime Bloch 124cf210d6
first draft 2020-01-13 04:39:47 +01:00
redfast00 15aaf65456
Merge pull request #364 from ZeusWPI/privacy
Privacy policy
2020-01-04 19:28:17 +01:00
Niko Strijbol 71eac8441e
Editorial changes 2020-01-01 18:18:06 +01:00
Niko Strijbol 422f648951
Small language changes 2020-01-01 18:01:07 +01:00
Niko Strijbol 588dca485b
Use link helper 2020-01-01 17:56:18 +01:00
Niko Strijbol ec9b53df9a
Spelling & small improvements 2020-01-01 17:52:10 +01:00
Niko Strijbol 94fea97d7f
Integrate Hydra in privacy policy 2020-01-01 17:46:18 +01:00
Niko Strijbol aabb67e863
Merge branch 'master' into privacy 2020-01-01 17:23:49 +01:00
redfast00 1b373f3792
Merge pull request #325 from ZeusWPI/sponsorende_leden
Added Sponsorende leden
2020-01-01 16:55:46 +01:00
redfast00 6bb0253984
Google no longer gives goodies 2019-12-16 22:31:54 +01:00
Niko Strijbol 6f7f0441d8
Woorden 2019-12-16 17:34:39 +01:00
Bauke Blomme 6313651efc fixed some spelling mistakes 2019-12-12 15:13:04 +00:00
Niko Strijbol 7a4fd859e8
Add link in footer 2019-12-12 13:40:54 +01:00
Robbe Van Herck d1a3411a4b
Merge pull request #366 from ZeusWPI/revert-365-revert-363-clean-sponsors
Revert "Revert "Clean-up sponsorende leden""
2019-12-11 23:32:52 +01:00
Robbe Van Herck 7005da9cd7
Revert "Revert "Clean-up sponsorende leden"" 2019-12-11 23:31:35 +01:00
Robbe Van Herck 7862b9d656
Add Bauke, Bart and Bryan 2019-12-11 22:59:00 +01:00
Robbe Van Herck cd98fb54fe
Merge pull request #365 from ZeusWPI/revert-363-clean-sponsors
Revert "Clean-up sponsorende leden"
2019-12-11 22:57:06 +01:00
Robbe Van Herck b8aa8af7bc
Revert "Clean-up sponsorende leden" 2019-12-11 22:54:41 +01:00
Niko Strijbol b521a6e1e2
Some rewriting and fixes 2019-12-10 23:09:15 +01:00
Niko Strijbol 447cd5205e
Fix submenu 2019-12-10 21:52:32 +01:00
Niko Strijbol bc3542601e
Link to contact page 2019-12-10 21:49:30 +01:00
Niko Strijbol 510e0cf9c9
Laatste categorie is verwerker en nieuwe samenvatting 2019-12-10 21:46:20 +01:00
Niko Strijbol 36804cb63d
Move privacy to about 2019-12-10 21:34:33 +01:00
Niko Strijbol d6f475efa4
Merge branch 'master' into privacy 2019-12-09 18:10:28 +01:00
Niko Strijbol fddc3b4eb3
Add more projects 2019-12-09 17:44:47 +01:00
redfast00 29cb1ae8b4
Merge pull request #363 from ZeusWPI/clean-sponsors
Clean-up sponsorende leden
2019-12-09 15:03:11 +01:00
redfast00 986fb9c61d
Merge pull request #362 from ZeusWPI/fix-facebook
Fix facebook the way it should be fixed
2019-12-09 12:44:21 +01:00
redfast00 5929b7a2b8
Also remove facebook from the README 2019-12-09 12:40:46 +01:00
Niko Strijbol 5ec2e56d1c
Clean-up sponsorende leden
- Simplified and clean-up html & css
- It's "sponsorende leden", not "sponserende leden"
2019-12-08 22:56:08 +01:00
Robbe Van Herck 70c315e79e
Add Davit 2019-12-08 21:59:53 +01:00
Robbe Van Herck 0b477fcb0e
Added Silox 2019-12-08 21:32:38 +01:00
Robbe Van Herck 89cca42580
Add Thecy 2019-12-08 21:13:35 +01:00
redfast00 c246dacea4
Merge pull request #359 from ZeusWPI/hashcode
Add Google Hashcode event
2019-12-08 14:51:16 +01:00
redfast00 c2f3855e31
Fix facebook the way it should be fixed 2019-12-08 14:49:55 +01:00
redfast00 320f2d86ca
Fix christmas cat 2019-12-08 14:40:12 +01:00
Niko Strijbol 422f6d94cd
Add even more content 2019-12-07 00:49:14 +01:00
Niko Strijbol 984b430955
Add more privacy content 2019-12-07 00:30:21 +01:00
ajuvercr afdfa98695 Let's go 2019-12-06 22:14:28 +01:00
ajuvercr 18afac1ebb minimal 2019-12-06 20:37:33 +01:00
Niko Strijbol d8a0e9a66a
Project stuff
- Add project metadata
- Extract metadata for projects and privacy
2019-12-06 19:54:58 +01:00
redfast00 7dab216619
Change date to 2020 2019-12-05 12:06:56 +01:00
redfast00 d965c0322e
Add Google Hashcode event 2019-12-05 11:47:03 +01:00
Robbe Van Herck d78c98bd00
Better html displaying 2019-12-04 17:08:56 +01:00
Robbe Van Herck c442f4fcd2
Add Rien, Jasper and Felix 2019-12-04 17:03:05 +01:00
Robbe Van Herck 7487a763b1
New, more versatile link format 2019-12-01 10:24:07 +01:00
Robbe Van Herck 77c5525dff
Add FlashYoshi 2019-12-01 10:09:17 +01:00
Niko Strijbol 1a0f9e59a0
Merge branch 'master' into privacy 2019-11-27 23:44:25 +01:00
Niko Strijbol 2465beae7a
Add first draft of privacy policy 2019-11-27 14:30:30 +01:00
Robbe Van Herck b095437a26
Update layouts/partials/_about_sub_navbar.erb
Co-Authored-By: Niko Strijbol <strijbol.niko@gmail.com>
2019-11-20 17:00:39 +01:00
Robbe Van Herck 5e4d36fc73
Update content/about/sponserende_leden.erb
Co-Authored-By: Niko Strijbol <strijbol.niko@gmail.com>
2019-11-20 17:00:16 +01:00
Evelyne bffee6f696 Fixed the supporting_members yaml which was causing a crash 2019-11-08 00:48:40 +01:00
kindtanton e7cb9762e5 Merge branch 'master' into sponsorende_leden 2019-11-07 15:29:52 +01:00
kindtanton 69c7b45eb8 Designed the 'Sponserende Leden' page 2019-11-05 20:05:42 +01:00
Robbe Van Herck 8f6eee34cc
Met dank aan @werthen 2019-03-27 21:57:39 +01:00
Robbe Van Herck efcb3da4f6
Vernederlandsing 2019-03-26 16:36:19 +01:00
Robbe Van Herck 832db714e8
Merge branch 'master' into sponsorende_leden 2019-03-26 16:24:06 +01:00
Robbe Van Herck 224f9bbf3f
Added dummy sponsoring members 2019-03-13 21:12:03 +01:00
360 changed files with 6897 additions and 606 deletions

View file

@ -1,2 +1,3 @@
---
BUNDLE_PATH: "vendor/bundle"
BUNDLE_WITH: "production"

View file

@ -12,6 +12,7 @@ engines:
enabled: true
rubocop:
enabled: true
channel: rubocop-0-79
markdownlint:
enabled: true

32
.github/workflows/main.yml vendored Normal file
View file

@ -0,0 +1,32 @@
# This is a basic workflow to help you get started with Actions
name: CI
# Controls when the action will run.
on:
# Triggers the workflow on push or pull request events but only for the master branch
push:
branches: [ master ]
pull_request:
branches: [ master ]
schedule:
- cron: "00 06 * * *"
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
# A workflow run is made up of one or more jobs that can run sequentially or in parallel
jobs:
# This workflow contains a single job called "build"
build:
# The type of runner that the job will run on
runs-on: ubuntu-latest
# Steps represent a sequence of tasks that will be executed as part of the job
steps:
- uses: actions/checkout@v2
- uses: cachix/install-nix-action@v13
with:
nix_path: nixpkgs=channel:nixos-unstable
- run: "nix-shell --run 'nanoc --env=prod'"
- run: "nix-shell --run 'nanoc --env=prod check --deploy'"

2
.gitignore vendored
View file

@ -24,3 +24,5 @@ crash.log*
.author-information
.fb_token
/vendor/

View file

@ -1 +1 @@
2.6.5
3.0.0

2
.tool-versions Normal file
View file

@ -0,0 +1,2 @@
nodejs 14.15.4
ruby 3.0.0

View file

@ -18,34 +18,36 @@ cache:
addons:
apt:
packages:
- texlive-full
- texlive-generic-recommended
- texlive-latex-base
- texlive-math-extra
- texlive-xetex
- lmodern
branches:
only:
- master
rvm:
- 2.6.5
notifications:
slack:
secure: tej68wbYns4DYg488iz+4ncU3/CHJvG/5c1qntGcEjti6vZp24atuH32BzNMY+gqa5ftZtcRfqIiJ0I0tkbiFWEDzjSk89bgjG4sgwXq1gMqi/Fj4bqEpjU5m7QLa786q4UfYyTF+srca1fHPLVS5REdGjRr2wxX+bcFnTRxreGCIrlNdWhoZPPJyS37R4RR9k+l5ZWZnqWgUN6bD448O8EzMRVRWoUSxQcJ6+u4QLpinEvem4iXe+WcHOyFfsNmavxGGMMpkOSed/tzA1l+gNpl224qOJl3yAk2qrGi4N6SOnSkeJFfUO5RzX56KDC/tcCL1oJpamhDmzDvRrbDNnCjSriv+g+PkXEjiwBF/tkZwIe7nMKyc9QF698Zvdgb6Ffbq21obsRnkkddkxijthdbUKMAIREPQuU7pXRL4ykPkBeB5GkNjPlErOooxvUHvQEVElJ8NMD4ychQqW6relaYJ0W0uy0QMvrtS+cHkpprZAOZzWLa3AdEOvD50kiS2hDhJway5JHJg/LMl3I6XVVMx6fNGdNWBcezeCqkDZM+nuMJqgAtQ+Tz8bwrHLCJgS5u0lQq/MbrDkYdpmmzvA5LXxn2SpjfOAlgiFKnSIwKSuuuwzW/zCEGdPo1pfBba2VfYAN4y1l863j5ph+eMtlHf7JG8mzIWTo3k+Jx8lQ=
before_install:
- wget https://github.com/jgm/pandoc/releases/download/2.8/pandoc-2.8-1-amd64.deb
- sudo dpkg -i pandoc-2.8-1-amd64.deb
- wget https://github.com/jgm/pandoc/releases/download/2.10.1/pandoc-2.10.1-1-amd64.deb
- sudo dpkg -i pandoc-2.10.1-1-amd64.deb
- openssl aes-256-cbc -K $encrypted_6059a4f451fd_key -iv $encrypted_6059a4f451fd_iv
-in id_rsa.enc -out deploy_key -d
- mv deploy_key ~/.ssh/id_rsa
- chmod 600 ~/.ssh/id_rsa
- echo -e "[zeus.ugent.be]:2222 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBC87/Q3H8f7ghmA+iCtKGaNyk0fx3Z36Xrn+eGv8a4pD7MXeu6Uwr0aN5HnkcbRWXFtMwnAU3ptoP90vH7qu99w=\n[herbert.ugent.be]:2222 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBGLnJMh2DgqpVnHxOmeV6KffvzZGEVfniq0NFHRGZoL4f7Uc8xeG9gn3cc7lCL02F9LwWZNwR4gSqhGt/RK2S54=\n[git.zeus.gent]:2222 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBGLnJMh2DgqpVnHxOmeV6KffvzZGEVfniq0NFHRGZoL4f7Uc8xeG9gn3cc7lCL02F9LwWZNwR4gSqhGt/RK2S54=\n" >> ~/.ssh/known_hosts
- git submodule update --init --recursive
- git submodule update --init --recursive --remote
# Repo for newer Node.js versions
# - curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash -
- curl -sL https://deb.nodesource.com/setup_14.x | sudo -E bash -
# Repo for Yarn
# - sudo apt-key adv --keyserver pgp.mit.edu --recv D101F7899D41F3C3
# - echo "deb http://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list
# - sudo apt-get update -qq
# - sudo apt-get install -y -qq yarn
- sudo apt-key adv --keyserver keyserver.ubuntu.com --recv D101F7899D41F3C3
- echo "deb http://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list
- sudo apt-get update -qq
- sudo apt-get install -y -qq yarn nodejs
- nodejs -v
- yarn
script:
- bundle exec nanoc --env=prod

11
Gemfile
View file

@ -5,6 +5,10 @@ gem 'nanoc'
gem 'icalendar' # ical files
gem 'kramdown'
# Kramdown math mode gems
gem 'kramdown-math-katex'
gem 'sassc'
gem 'typogruby'
@ -13,18 +17,19 @@ gem 'builder'
# Word counting gem (which takes special characters into account)
# for reading time
gem 'words_counted'
gem 'words_counted', git: 'https://github.com/werthen/words_counted'
group :development do
gem 'adsf'
# puma instead of thin, see https://github.com/nanoc/nanoc/issues/1499
gem 'puma'
gem 'highline'
gem 'terminal-notifier'
gem 'terminal-notifier-guard'
gem 'nanoc-live'
end
group :production do
# Faster css autoprefixing
gem 'mini_racer'
# Autoprefixing for class
gem 'autoprefixer-rails'
gem 'htmlcompressor'

View file

@ -1,28 +1,43 @@
GIT
remote: https://github.com/werthen/words_counted
revision: 735357e4d530c99d5c4c366d0c246ebffffd80de
specs:
words_counted (1.0.2)
GEM
remote: https://rubygems.org/
specs:
addressable (2.7.0)
public_suffix (>= 2.0.2, < 5.0)
adsf (1.4.2)
adsf (1.4.5)
rack (>= 1.0.0, < 3.0.0)
autoprefixer-rails (9.7.2)
adsf-live (1.4.5)
adsf (~> 1.3)
em-websocket (~> 0.5)
eventmachine (~> 1.2)
listen (~> 3.0)
rack-livereload (~> 0.3)
autoprefixer-rails (10.2.4.0)
execjs
builder (3.2.3)
coderay (1.1.2)
builder (3.2.4)
coderay (1.1.3)
colored (1.2)
concurrent-ruby (1.1.5)
cri (2.15.9)
concurrent-ruby (1.1.8)
cri (2.15.11)
ddmemoize (1.0.0)
ddmetrics (~> 1.0)
ref (~> 2.0)
ddmetrics (1.0.1)
ddplugin (1.0.2)
diff-lcs (1.3)
equatable (0.6.1)
ddplugin (1.0.3)
diff-lcs (1.4.4)
em-websocket (0.5.2)
eventmachine (>= 0.12.9)
http_parser.rb (~> 0.6.0)
eventmachine (1.2.7)
execjs (2.7.0)
ffi (1.11.3)
ffi (1.15.0)
formatador (0.2.5)
guard (2.16.1)
guard (2.16.2)
formatador (>= 0.2.4)
listen (>= 2.7, < 4.0)
lumberjack (>= 1.0.12, < 2.0)
@ -32,43 +47,54 @@ GEM
shellany (~> 0.0)
thor (>= 0.18.1)
guard-compat (1.2.1)
guard-nanoc (2.1.7)
guard-nanoc (2.1.9)
guard (~> 2.8)
guard-compat (~> 1.0)
nanoc (>= 4.11.13, < 5.0)
nanoc-cli (~> 4.11, >= 4.11.14)
nanoc-core (~> 4.11, >= 4.11.14)
hamster (3.0.0)
concurrent-ruby (~> 1.0)
highline (2.0.3)
htmlcompressor (0.4.0)
icalendar (2.6.0)
http_parser.rb (0.6.0)
icalendar (2.7.1)
ice_cube (~> 0.16)
ice_cube (0.16.3)
json (2.2.0)
json_schema (0.20.8)
kramdown (2.1.0)
libv8 (7.3.492.27.1)
listen (3.2.0)
json (2.5.1)
json_schema (0.21.0)
katex (0.6.1)
execjs (~> 2.7)
kramdown (2.3.1)
rexml
kramdown-math-katex (1.0.1)
katex (~> 0.4)
kramdown (~> 2.0)
listen (3.5.1)
rb-fsevent (~> 0.10, >= 0.10.3)
rb-inotify (~> 0.9, >= 0.9.10)
lumberjack (1.0.13)
method_source (0.9.2)
mini_portile2 (2.4.0)
mini_racer (0.2.8)
libv8 (>= 6.9.411)
nanoc (4.11.14)
lumberjack (1.2.8)
method_source (1.0.0)
mini_portile2 (2.5.0)
nanoc (4.12.0)
addressable (~> 2.5)
colored (~> 1.2)
nanoc-cli (= 4.11.14)
nanoc-core (= 4.11.14)
nanoc-checking (~> 1.0)
nanoc-cli (= 4.12.0)
nanoc-core (= 4.12.0)
nanoc-deploying (~> 1.0)
parallel (~> 1.12)
tty-command (~> 0.8)
tty-which (~> 0.4)
nanoc-cli (4.11.14)
nanoc-checking (1.0.1)
nanoc-cli (~> 4.11, >= 4.11.15)
nanoc-core (~> 4.11, >= 4.11.15)
nanoc-cli (4.12.0)
cri (~> 2.15)
diff-lcs (~> 1.3)
nanoc-core (= 4.11.14)
nanoc-core (= 4.12.0)
zeitwerk (~> 2.1)
nanoc-core (4.11.14)
nanoc-core (4.12.0)
concurrent-ruby (~> 1.1)
ddmemoize (~> 1.0)
ddmetrics (~> 1.0)
ddplugin (~> 1.0)
@ -78,51 +104,67 @@ GEM
tomlrb (~> 1.2)
tty-platform (~> 0.2)
zeitwerk (~> 2.1)
nanoc-deploying (1.0.1)
nanoc-checking (~> 1.0)
nanoc-cli (~> 4.11, >= 4.11.15)
nanoc-core (~> 4.11, >= 4.11.15)
nanoc-live (1.0.0)
adsf-live (~> 1.4)
listen (~> 3.0)
nanoc-cli (~> 4.11, >= 4.11.14)
nanoc-core (~> 4.11, >= 4.11.14)
nenv (0.3.0)
nokogiri (1.10.5)
mini_portile2 (~> 2.4.0)
nio4r (2.5.7)
nokogiri (1.11.2)
mini_portile2 (~> 2.5.0)
racc (~> 1.4)
notiffany (0.1.3)
nenv (~> 0.1)
shellany (~> 0.0)
pandoc-ruby (2.0.2)
parallel (1.19.1)
pastel (0.7.3)
equatable (~> 0.6)
pandoc-ruby (2.1.4)
parallel (1.20.1)
pastel (0.8.0)
tty-color (~> 0.5)
pry (0.12.2)
coderay (~> 1.1.0)
method_source (~> 0.9.0)
public_suffix (4.0.1)
rack (2.0.7)
pry (0.14.0)
coderay (~> 1.1)
method_source (~> 1.0)
public_suffix (4.0.6)
puma (5.2.2)
nio4r (~> 2.0)
racc (1.5.2)
rack (2.2.3)
rack-livereload (0.3.17)
rack
rainpress (1.0.1)
rb-fsevent (0.10.3)
rb-inotify (0.10.0)
rb-fsevent (0.10.4)
rb-inotify (0.10.1)
ffi (~> 1.0)
ref (2.0.0)
rubypants (0.7.0)
sassc (2.2.1)
rexml (3.2.4)
rubypants (0.7.1)
sassc (2.4.0)
ffi (~> 1.9)
shellany (0.0.1)
slow_enumerator_tools (1.1.0)
terminal-notifier (2.0.0)
terminal-notifier-guard (1.7.0)
thor (0.20.3)
tomlrb (1.2.9)
tty-color (0.5.0)
tty-command (0.9.0)
pastel (~> 0.7.0)
tty-platform (0.2.1)
tty-which (0.4.1)
thor (1.1.0)
tomlrb (1.3.0)
tty-color (0.6.0)
tty-command (0.10.1)
pastel (~> 0.8)
tty-platform (0.3.0)
tty-which (0.4.2)
typogruby (1.0.18)
rubypants
uglifier (4.2.0)
execjs (>= 0.3.0, < 3)
w3c_validators (1.3.4)
w3c_validators (1.3.6)
json (>= 1.8)
nokogiri (~> 1.6)
words_counted (1.0.2)
rexml (~> 3.2)
yui-compressor (0.12.0)
zeitwerk (2.2.1)
zeitwerk (2.4.2)
PLATFORMS
ruby
@ -136,9 +178,11 @@ DEPENDENCIES
htmlcompressor
icalendar
kramdown
mini_racer
kramdown-math-katex
nanoc
nanoc-live
pandoc-ruby
puma
rainpress
sassc
terminal-notifier
@ -146,8 +190,8 @@ DEPENDENCIES
typogruby
uglifier (>= 4.0.0)
w3c_validators
words_counted
words_counted!
yui-compressor
BUNDLED WITH
2.0.2
2.2.3

View file

@ -1,5 +1,5 @@
# zeus.ugent.be
[![Build Status](https://travis-ci.org/ZeusWPI/zeus.ugent.be.svg?branch=master)](https://travis-ci.org/ZeusWPI/zeus.ugent.be)
[![Build Status](https://api.travis-ci.com/ZeusWPI/zeus.ugent.be.svg?branch=master)](https://travis-ci.com/github/ZeusWPI/zeus.ugent.be)
[![Code Climate](https://codeclimate.com/github/ZeusWPI/zeus.ugent.be.png)](https://codeclimate.com/github/ZeusWPI/zeus.ugent.be)
[![PageSpeed](https://pagespeed-badges.herokuapp.com/?url=zeus.ugent.be&strat=desktop&showStratLabel=true)](https://developers.google.com/speed/pagespeed/insights/?url=https%3A%2F%2Fzeus.ugent.be&tab=desktop)
[![PageSpeed](https://pagespeed-badges.herokuapp.com/?url=zeus.ugent.be&strat=mobile&showStratLabel=true)](https://developers.google.com/speed/pagespeed/insights/?url=https%3A%2F%2Fzeus.ugent.be&tab=mobile)
@ -60,11 +60,22 @@ The latest and greatest builds on master get deployed automatically using [travi
For manual deployment, run
```bash
bundle exec nanoc deploy --target public
# Build the site for production
bundle exec nanoc --env=prod
# Run checks
bundle exec nanoc --env=prod check --deploy
# Deploy it to the server
bundle exec nanoc deploy --target public --env=prod
```
If you want to deploy this on your own system for whatever reason, just serve the files using a webserver like nginx or Apache.
## Uploading media files
Before using mediafiles on the site, upload them via https://zeus.ugent.be/zeuswpi/, our own custom [uploading service](https://github.com/ZeusWPI/ZeusWPI). You'll receive the server-filename which is available at the aforementioned url.
## Submitting a Pull Request
Once you've submitted a PR, it will automatically be deployed to (PR#).pr.zeus.gent, for easier reviewing.
@ -73,17 +84,6 @@ Once you've submitted a PR, it will automatically be deployed to (PR#).pr.zeus.g
Analytics are powered by [Fathom](https://usefathom.com) and are available on <https://stats.zeus.gent>. These are only available to administrators with proper rights. These analytics are self hosted and provide only simple statistics for our information, without breaching your privacy.
## Import event from Facebook
You can import events from Facebook with `bundle exec nanoc fetch #{event_id}`.
You will need to create a `.fb_token` file and request an API token to put in there, see [FB graph API](https://developers.facebook.com/tools/explorer/).
You will probably need to make a new app (see navbar, it's quite trivial), unless you already have a Zeus site app.
You need to create a User Token with `user_events` permission.
We currently request from v2.10, details about the code can be found in [./commands/fetch].
## Built With
* [nanoc](https://github.com/nanoc/nanoc), static site generator

43
Rules
View file

@ -3,6 +3,9 @@
require 'json'
require 'icalendar'
require 'kramdown'
require 'kramdown-math-katex'
# Important!!!
# First ignore the node_modules, we do not need any of it on the site directly.
@ -22,15 +25,25 @@ preprocess do
ignore_old_content('blog', 'events', 'about/verslagen') if development?
update_blog_attributes
convert_tags('Blog')
convert_tags('Events')
create_yearly_items('Blog')
create_yearly_items('Events')
create_tagly_items('Blog')
create_tagly_items('Events')
convert_event_time_to_timestamps
all_events.each do |event|
check_schema(:event, event)
end
all_privacy_items.each do |project|
check_schema(:privacy, project)
end
add_report_metadata
add_project_metadata
convert_locations
end
#
@ -70,7 +83,7 @@ end
compile '/events/*/*' do
filter :erb
filter :kramdown
filter :kramdown, {math_engine: :katex}
layout '/eventpost.*'
layout '/default.*'
@ -95,8 +108,8 @@ end
compile '/blog/*/*.md' do
filter :erb
layout '/blogpost.md'
filter :kramdown
filter :typogruby
filter :kramdown, {math_engine: :katex}
filter :typogruby_custom
layout '/blogpost.erb'
layout '/generic.*'
@ -135,13 +148,24 @@ 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
#
# Note drive/verslagen is 'linked' as a data source to /about/verslagen/
compile '/about/verslagen/*/*.md', rep: :pdf do
filter :pandoc_pdf, args: { f: :markdown, :'pdf-engine' => 'xelatex' } if production?
filter :pandoc_pdf, args: { f: :markdown, 'pdf-engine': 'xelatex', template: 'templates/report.tex' } if production?
write ext: (production? ? 'pdf' : 'md')
end
@ -154,7 +178,7 @@ compile '/**/*.erb' do
# Apply typographic improvements if required by the page. Use this on text-heavy pages,
# such as the history page.
if @item[:typography]
filter :typogruby
filter :typogruby_custom
end
layout '/generic.*'
@ -178,10 +202,13 @@ compile '/assets/scripts/**/*.js' do
filter :uglify_js, harmony: true if production?
end
ignore '/assets/stylesheets/includes/**/*'
ignore '/data/**/*'
ignore '/assets/stylesheets/includes/**/*'
compile '/assets/stylesheets/**/*.scss' do
# This filter is necessary for the workaround present in main.scss and deals with out of date dependencies
filter :erb
sass_opts = {
syntax: :scss,
load_paths: ['content/assets/stylesheets']
@ -218,6 +245,10 @@ route '/**/*.{erb,html,md}' do
"#{item.identifier.without_ext}/index.html"
end
route %r[/well-known/(.+)] do |rest|
"/.well-known/" + rest[0]
end
# Let anything else simply pass through
passthrough '/**/*'

54
commands/event.rb Normal file
View file

@ -0,0 +1,54 @@
require 'highline/import'
require 'yaml'
usage 'event [options]'
aliases :e
summary 'Add a new event'
description 'Adds a new event, filling in and validating metadata.'
def bold_say(str)
say "<%= color %(#{str}), :bold %>"
end
def bold_ask(str, *args)
res = ask "<%= color %(#{str}), :bold %>", *args
puts
res
end
run do |_opts, _args, _cmd|
result_hash = {}
post_directory = 'content/events'
author_file = '.author-information'
bold_say "Let's make a new event, shall we?"
bold_say('-' * 20)
last_entry = "#{post_directory}/#{Dir.entries('content/events').last}"
result_hash['title'] = bold_ask 'What will the title be?'
result_hash['description'] = bold_ask 'Give a description of the event'
result_hash['author'] = if File.exist? author_file
File.read(author_file).chomp
else
bold_ask 'What is your name?'
end
result_hash['created_at'] = Date.today
result_hash['time'] = DateTime.parse(bold_ask('When will the event start? (Use a format Ruby understands)')).to_s
result_hash['end'] = DateTime.parse(bold_ask('When will the event end? (Use a format Ruby understands)')).to_s
result_hash['location'] = bold_ask 'Where will the event take place? (Textual description)'
result_hash['locationlink'] = bold_ask 'Where will the event take place? (Something OSM can find or $kelder, $s9 or $therminal)'
filename = result_hash['title'].downcase.tr(' ', '-').gsub(/[^0-9A-Za-z-]/, '')
File.open("#{last_entry}/#{filename}.md", 'w') do |file|
file.write(result_hash.to_yaml + '---')
end
end

View file

@ -1,30 +0,0 @@
# frozen_string_literal: true
require 'net/http'
require 'json'
usage 'fetch [facebook event id]'
aliases :f
summary 'Fetch an event from facebook'
description 'Fetch an event from facebook'
run do |_opts, args, _cmd|
fb_token = File.read('.fb_token')
event_id = args[0]
uri = URI("https://graph.facebook.com/v2.10/#{event_id}?fields=cover,name,description,start_time,place,end_time&access_token=#{fb_token}")
o = JSON.parse(Net::HTTP.get(uri))
puts <<~EOS
---
title: "#{o['name']}"
description: #Fill in
time: #{o['start_time']}
end: #{o['end_time']}
location: #{o['place']['name']}
banner: #{o['cover']['source']}
created_at: #Fill in
facebook: 'https://www.facebook.com/events/#{event_id}/'
---
#{o['description']}
EOS
end

View file

@ -1,8 +1,12 @@
---
narrow_page: true
subnavigation:
bar: about
identifier: about
name: Zeus WPI
order: 100
---
<%= render '/partials/_about_sub_navbar.*', selected: 'about' %>
<h1 class="title is-1 has-text-centered">About Zeus WPI</h1>
<div class="content">

View file

@ -1,8 +1,13 @@
---
narrow_page: true
typography: true
subnavigation:
bar: about
identifier: historiek
name: Historiek
order: 400
---
<%= render '/partials/_about_sub_navbar.*', selected: 'historiek' %>
<h1 class="title is-1 has-text-centered">Historiek</h1>
<div class="timeline">
@ -207,4 +212,45 @@ typography: true
Verder organiseren we ook voor het eerst HTTPizza in samenwerking met Ruben Verborgh en IDLab, en, omdat bij 25 jaar Zeus nog wel wat vernieuwing mag, schrijven we onszelf een nieuwe site.</p>
</div>
</div>
<header class="timeline-header">
<span class="tag is-primary is-medium">2017</span>
</header>
<div class="timeline-item">
<div class="timeline-marker"></div>
<div class="timeline-content content">
<h2>Het jaar 2017 2018</h2>
<p>Dit jaar slagen we er wél in om <abbr title="Directie Gebouwen en Facilitair Beheer">DGFB</abbr> te overtuigen dat de geleidelijke erosie van de keldervloer in de vorm van rood stof onze neus-, oor-, keel- én spuigaten uitkomt. In de lente van 2018 ruilt de kelder haar stoffig rood in voor blinkend grijs. Wie de volledige saga van de <em>vleor</em> wil kennen dat dat lezen in de <a href="/blog/17-18/vleor/">betreffende blogpost</a>.
<figure>
<img src="https://zeus.ugent.be/zeuswpi/trZFwU90.jpg" alt="Lege kelder met een grijze vloer">
<figcaption>
De nieuwe, grijze, blinkende vloer van de Zeuskelder.
</figcaption>
</figure>
<p>Dit jaar werd er opnieuw vleitig aan projecten gewerkt en werden de grondslagen gelegd voor een nieuw toekomstig legacy-project: <b>G2</b>. Ook aan events was er geen tekort. Zo organiseerden we in samenwerking met <a href="https://ceneka.be/">CenEka</a>, onze zuster-werkgroep uit de ingenieursfaculteit, een reeks <b>TECH Talkz</b>.
<p>Tot slot breidt Zeus haar digitaal vastgoed uit en leggen we onze territoriale claim op de domeinnaam <a href="https://zeus.gent">zeus.gent</a>.
</div>
</div>
<header class="timeline-header">
<span class="tag is-primary is-medium">2018</span>
</header>
<div class="timeline-item">
<div class="timeline-marker"></div>
<div class="timeline-content content">
<h2>Het jaar 2018 2019</h2>
<p>De tijd is gekomen om van chatplatform te wisselen. Vanaf nu is Zeus WPI te vinden op <a href="https://mattermost.zeus.gent/">https://mattermost.zeus.gent</a>. Voor de eerste keer organiseren we ook een esoterische codenight om zo veel mogelijk eerstejaars kennis te laten maken met de wondere wereld van het programmeren. In het tweede semester is er ook de eerste IHNGTWHSIPB (Ik Heb Nog Genoeg Tijd Want Het Semester Is Pas Begonnen) codenight. Een maand later organiseren we ook onze eigen CTF (Capture The Friday), gericht op beginnende l33t h4x0rs.</p>
<p>Qua projecten wordt het idee van vorig jaar genaamd G2 eindelijk een ding, er is meer animo voor en er begint dit keer ook effectief code uit voort te komen. Daarnaast wordt ook Cat (Cuddles And Bad Abbreviations) geschreven, onze kaart van wie knuffels gegeven heeft aan wie. Omdat we vinden dat de messages van de Cammie-site naar de kelder niet archaisch genoeg getoond worden besluiten we om een systeem te schrijven dat de berichten via een Raspberry Pi naar Hoek (de computer in de hoek van de kelder) stuurt, die deze toont met behulp van een puur x86-assembly programma dat van een floppy draait. Waarom? Waarom niet?!</p>
</div>
</div>
<header class="timeline-header">
<span class="tag is-primary is-medium">2019</span>
</header>
<div class="timeline-item">
<div class="timeline-marker"></div>
<div class="timeline-content content">
<h2>Het jaar 2019 2020</h2>
<p>Het jaar begon ook dit jaar met een esoterisch-getinte codenight. Dit jaar was onze spelletjesavond net iets anders, we werkten namelijk samen met <a href="https://nemesisgent.be/">de studentenvereniging Nemesis</a> die ons uitnodigden in hun clublokaal om samen gezellig spellejes te spelen. We doen ook dit jaar opnieuw een CTF gericht om al intro te dienen. In het tweede semester beginnen we aan het Durf Doen-project van de GSR (Gentse Studentenraad) te revampen dat dient om studenten te helpen om studentenverenigingen te vinden die bij hen passen. We bezoeken ook de jobavond van onze Leuvense vrienden ULYSSIS en organiseren samen met VVN, Prime en WiNA een paar dagen later (toevallig) onze eigen jobbeurs.</p>
<p>Wat er daarna gebeurde had niemand kunnen voorspellen, de COVID-19 infecties lopen op en ons land gaat in een nationale lockdown. Natuurlijk betekent dit ook dat wij met Zeus onze kelder moeten sluiten voor onbepaalde duur. Hoe spijtig dit ook moge zijn, Zeus laat zich niet doen en we organiseren een online LAN-party (een WAN-party eigenlijk) en een online-CTF. Ook onze verkiezingen moeten digitaal doorgaan en in de zomer hebben we een van de meest rare bestuursovergangen in de geschiedenis van onze vereniging. Niemand weet wat het volgend jaar gaat brengen, maar Zeus blijft doet er alles aan om er het beste van te maken.</p>
</div>
</div>
</div>

View file

@ -1,9 +1,12 @@
---
narrow_page: true
subnavigation:
bar: about
identifier: oud-bestuur
name: Oud-bestuur
order: 500
---
<%= render '/partials/_about_sub_navbar.*', selected: 'oud-bestuur' %>
<h1 class="title is-1 has-text-centered">Oud-bestuur</h1>
<div class="content">

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

@ -0,0 +1,268 @@
---
title: Privacybeleid
narrow_page: true
typography: true
toc: true
subnavigation:
bar: about
identifier: privacy
name: Privacybeleid
order: 300
---
<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="2021-01-07">7 januari 2021</time></strong>.
</p>
<p>Zeus WPI biedt een waaier aan diensten en projecten aan aan haar leden en het algemene publiek. Met dit privacybeleid wil 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 bedoeld 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 (<em lang="en">analytics</em>) en/of foutrapporten. De <span lang="en">analytics</span> 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 / <em lang="en"><abbr title="General Data Protection Regulation">GDPR</abbr></em>) 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 en Hydra.
</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 om 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, zien erop toe dat ontwikkelaars van projecten nooit méér 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 <em lang="en">Google Drive</em>. 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 <em lang="en">access logs</em>. 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. ontbrekende 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 IP-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 lang="en"><a href="https://nl.wikipedia.org/wiki/Useragent">user agent</a></em> van het verzoek: welke webbrowser of softwarebibliotheek stuurde het verzoek. 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 aan te passen 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. Het is 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 om het doel van het project te verwezenlijken, kunnen deze gegevens ook gebruikt worden voor statistisch of wetenschappelijk onderzoek, om zo inzicht te verwerven 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 (<em lang="en">analytics</em>) worden verzameld om inzicht te krijgen in het gebruik van een project, om zo de aandacht op de meest 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 <span lang="en">analytics</span> 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 of om vragen of opmerkingen over te maken, 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 <em lang="en">Google Analytics</em></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 <em lang="en">Google Analytics</em> door Zeus:</p>
<ul>
<li>Uw gegevens worden gedurende 14 maanden bewaard door <em lang="en">Google Analytics</em> na uw laatste bezoek.</li>
<li>Uw gegevens worden door Google niet gedeeld met derden.</li>
<li>Google verwerkt uw gegevens mogelijk buiten de <abbr title="Europese Economische Ruimte">EER</abbr>. Google is gecertificeerd in het kader van het <abbr title="Europese Unie">EU</abbr>-<abbr title="Verenigde Staten">VS</abbr>-privacyschild.</li>
<li>Er wordt geen informatie verzameld waarmee Zeus of Google u kunnen identificeren (zoals IP-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 <span lang="en">Cloudflare <abbr title="Content Delivery Network">CDN</abbr></span></h3>
<p>We gebruiken de <span lang="en">Cloudflare CDN</span> 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 <span lang="en">Crashlytics</span> (Google)</h3>
<p>Voor het verzamelen van foutrapporten gebruiken sommige apps <span lang="en">Crashlytics</span> van <span lang="en">Firebase</span> (wat op zijn beurt van Google is). 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 <span lang="en">Crashlytics</span> door Zeus:</p>
<ul>
<li><span lang="en">Stacktraces</span> 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 IP-adressen).</li>
</ul>
</div>

View file

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

View file

@ -0,0 +1,8 @@
---
status: additional
---
- <span lang="en">Google Analytics</span> wordt gebruikt, zie de paragraaf [*Gebruik van <span lang="en">Google Analytics</span>*](#google-analytics).
- De achtergrondkaart kan opgehaald worden van verschillende services:
- Mapbox, zie [hun privacybeleid](https://www.mapbox.com/legal/privacy/) (Engels).
- <abbr title="OpenStreetMap België">OSM-BE</abbr>-tegels, zie [hun website](https://tile.osm.be/)

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 <span lang="en">Fathom</span> moet in twee categorieën ingedeeld worden:
- Als gebruiker van een website met <span lang="en">Fathom</span> als <span lang="en">analytics</span>. In dit geval verzamelt <span lang="en">Fathom</span> geen persoonlijke data, zie het [databeleid](https://usefathom.com/data) (Engels).
- Als gebruiker van <span lang="en">Fathom</span> zelf. <span lang="en">Fathom</span> 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 <span lang="en">Google Charts</span>-API voor het tonen van grafieken. Hierop is het privacybeleid van <span lang="en">Google Charts</span> 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 <span lang="en">commits</span> en <span lang="en">issues</span>. Deze data worden verzameld van uit de <span lang="en">repositories</span> van Zeus WPI. Deze gegevens zijn uiteraard essentieel voor de werking van <span lang="en">Gamification</span>. 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 <span lang="en">repositories</span> niet onder persoonlijke gegevens valt zoals bedoeld in dit privacybeleid. Dit beleid is dan ook niet van toepassing op de inhoud van de <span lang="en">repositories</span>. Het is de verantwoordelijkheid van de gebruikers om geen persoonlijke informatie in de <span lang="en">repositories</span> 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 hoofddoel van u uw bestelling te laten ontvangen, 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 hoogstens geanonimiseerd.

View file

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

View file

@ -0,0 +1,25 @@
---
status: additional
---
##### Website
De [website van Hydra](https://hydra.ugent.be) maakt gebruik van <span lang="en">Google Analytics</span> (zie details in de paragraaf [_Gebruik van <span lang="en">Google Analytics</span>_](#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 blijven.
##### Apps
Voor de apps wordt de verzamelde data opgedeeld in twee categorieën: analytics en foutrapportage:
- <span lang="en">**Analytics.**</span> Zeus wil 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 de behoeften van de gebruikers. Zeus gebruikt deze data niet om gebruikers te identificeren. Voor <span lang="en">analytics</span> wordt <span lang="en">Google Analytics</span> (zie details in de paragraaf [_Gebruik van <span lang="en">Google Analytics</span>_](#google-analytics)) gebruikt.
- **Foutrapportage.** Zeus wil 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 <span lang="en">Crashlytics</span> gebruikt (zie paragraaf [_Foutrapporten met <span lang="en">Crashlytics</span>_](#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 <span lang="en">Google Maps</span> gebruikt. Indien u toestemming geeft, zal uw locatie gebruikt worden om de kaart te centreren op uw locatie. <span lang="en">Google Maps</span> 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.

View file

@ -0,0 +1,19 @@
---
status: additional
---
KeRS is geschreven om Zeus bij te staan in het vervullen van haar verplichtingen omtrent het toelaten van studenten in de kelder, conform de coronamaatregelen.
Alle data die verzameld worden door deze applicatie zullen dan ook enkel voor dit doel gebruikt worden.
Concreet worden volgende gegevens verzameld:
- De applicatiegegevens zelf: voor welke evenementen een gebruiker zich heeft ingeschreven, voor welke evenementen een gebruiker aanwezig mag zijn, enzovoort.
- De UGent verplicht Zeus om een lijst door te geven van de studenten die aanwezig zullen zijn in de kelder.
Hiervoor moet Zeus de echte naam en het studentennummer van de gebruiker opslaan.
Deze gegevens worden enkel binnen KeRS opgeslagen en worden buiten het doorgeven aan de UGent niet gebruikt.
Tot slot wordt er in KeRS gebruik gemaakt van geautomatiseerde besluitvorming.
Indien er meer gebruikers ingeschreven zijn voor een evenement dan dat er aanwezigen kunnen zijn in de kelder, zal aan de hand van een metriek op geautomatiseerde wijze bepaald worden wie voorrang krijgen bij het inschrijven voor dat evenement.
Dit is noodzakelijk om elke gebruiker de kans te geven aanwezig te kunnen zijn in de kelder van Zeus.
De exacte metriek is te vinden in de broncode van de applicatie en ligt niet vast: deze kan gewijzigd worden om de eerlijkheid van de selectie te bevorderen.
Meer informatie en context vindt u in [deze blogpost](https://zeus.ugent.be/blog/20-21/wij-coden-voort/).

View file

@ -0,0 +1,7 @@
---
status: additional
---
De citaten verzameld in dit project worden voornamelijk gebruikt in de Mattermost-instantie van Zeus, al zijn de citaten publiekelijk zichtbaar.
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 het mogelijk gevoelige karakter van de berichten hebben projectontwikkelaars geen toegang tot deze data; enkel het bestuur heeft toegang.

View file

@ -0,0 +1,9 @@
---
status: additional
---
<span lang="en">MessageOS</span> 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.
- <span lang="en">[MessageOS](https://git.zeus.gent/ZeusWPI/ass_messages)</span>. 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 <span lang="en">Font Awesome</span> via een site van derden, <span lang="en">MaxCDN</span>. Zie [hun privacybeleid](https://www.bootstrapcdn.com/privacy-policy/) (Engels).
- Bezoekersstatistieken worden bijgehouden met <span lang="en">Fathom</span>, zie de paragraaf <span lang="en">[*Fathom*](#fathom)</span>.
- Sommige pagina's kunnen om bijkomende functionaliteit aan te bieden, aanvullende zaken laden via diensten van derden. Hieronder is een lijst te vinden van alle gebruikte diensten en wat ze laden:
- Gebruikersdata van <span lang="en">[*Gamification*](#gamification)</span>.
- Kaarten via OpenStreetMap. Zie [hun privacybeleid](https://wiki.osmfoundation.org/wiki/Privacy_Policy) (Engels).
- Softwarebibliotheken via <span lang="en">Stackpath</span>. Zie [hun privacybeleid](https://www.stackpath.com/legal/privacy-statement/) (Engels).
- Afbeeldingen via [jaspervdj.be](https://jaspervdj.be/images/) (Engels).
- Formulieren via <span lang="en">Google Forms</span> en <span lang="en">Google Spreadsheets</span>. Zie het [privacybeleid van Google](https://policies.google.com/privacy) (Engels).
- D3 via [d3js.org](https://d3js.org).
- Softwarebibliotheken via <span lang="en">Cloudflare</span>, zie de [gelijknamige paragraaf](#cloudflare).
- Video's via <span lang="en">Invidious</span>. 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 <abbr title="Europese Centrale Bank">ECB</abbr> <span lang="en">"virtual currency scheme with bidirectional flow"</span> (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 <span lang="en">Firebase</span>. Het [het privacybeleid](https://firebase.google.com/support/privacy) (Engels) van <span lang="en">Firebase</span> verschaft uitgebreide informatie. Concreet gebruikt Tappb volgende diensten en gebruikt daarbij volgende data:
- **<span lang="en">Firebase Cloud Messaging</span>**. Dit wordt gebruikt om meldingen naar de applicatie te sturen. Hiervoor wordt het <span lang="en">"instance ID"</span> verzameld, om te identificeren naar welk toestel een melding gestuurd moet worden. Deze worden onbeperkt bijgehouden. Indien u dit ID wenst te verwijderen, zal <span lang="en">Firebase</span> het ID binnen de 180 dagen verwijderen.
- **<span lang="en">ML Kit for Firebase</span>**. Dit wordt gebruikt om de barcodes van producten te scannen. De afbeeldingen met barcodes worden tijdelijk bewaard op de servers van <span lang="en">Firebase</span> 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 <span lang="en">"instance ID"s</span> bijgehouden, volgens dezelfde voorwaarden als bij <span lang="en">Firebase Cloud Messaging</span>.
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 <span lang="en">Cloudflare</span> (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

@ -0,0 +1,61 @@
---
narrow_page: true
subnavigation:
bar: about
identifier: sponsorende-leden
name: Sponsorende leden
order: 700
---
<h1 class='title is-1 has-text-centered'>Sponsorende leden</h1>
<div id='sponsoring-members' class="content">
<% if current_sponsoring_members.nil? %>
Nog geen sponsorende leden voor dit academiejaar. Interesse? Contacteer het bestuur.
<% else %>
<% current_sponsoring_members.shuffle.each do |member| %>
<div id="<%= member[:nickname] %>" class="box sponsoring-member">
<article class="columns is-mobile">
<div class="column is-gapless is-narrow logo-wrapper">
<% if member[:photo] %>
<img src="<%= member[:photo] %>" alt="<%= member[:name] %>">
<% else %>
<div class="logo-initial has-text-centered">
<%= member[:name].chars.first %>
</div>
<% end %>
<div class="name"><%= member[:name] %></div>
<div class="username">(<%= member[:nickname] %>)</div>
</div>
<div class="column">
<div>
<blockquote>
<%= to_HTML(member[:quote]) %>
</blockquote>
<p class="description">
<%= to_HTML(member[:description]) %>
</p>
</div>
<div class="links">
<% member[:links].each do |link| %>
<% if link[:icon] %>
<a class="social-icon" href="<%= link[:url] %>" target="_blank">
<span class="icon">
<%= fa link[:icon], {:size => "2x"} %>
</span>
</a>
<% else %>
<a class="social-icon" href="<%= link[:url] %>" target="_blank">
<span class="icon">
<%= fa :globe, {:size => "2x"} %>
</span>
</a>
<% end %>
<% end %>
</div>
</div>
</article>
</div>
<% end %>
<% end %>
</div>

View file

@ -1,9 +1,12 @@
---
narrow_page: true
subnavigation:
bar: about
identifier: statuten
name: Statuten
order: 200
---
<%= render '/partials/_about_sub_navbar.*', selected: 'statuten' %>
# Statuten
{:.title.is-1.has-text-centered}

View file

@ -1,8 +1,12 @@
---
narrow_page: true
subnavigation:
bar: about
identifier: verslagen
name: Verslagen
order: 600
---
<%= render '/partials/_about_sub_navbar.*', selected: 'verslagen' %>
<h1 class="title is-1 has-text-centered">Reports</h1>
<div class="content">

View file

@ -0,0 +1,735 @@
// Code below modified from https://github.com/arhs/iban.js
/*
The MIT License (MIT)
Copyright (c) 2013-2017 ARHS Developments SA
Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal in
the Software without restriction, including without limitation the rights to
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
the Software, and to permit persons to whom the Software is furnished to do so,
subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
function electronicFormat(iban) {
return iban.replace(/[^a-zA-Z0-9]/g, '').toUpperCase();
}
// Code below modified from https://github.com/derhuerst/sepa-payment-qr-code
/*
Copyright (c) 2018, Jannis R
Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies.
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
const SERVICE_TAG = 'BCD'
const VERSION = '002'
const CHARACTER_SET = 1
const IDENTIFICATION_CODE = 'SCT'
const assertNonEmptyString = (val, name) => {
if ('string' !== typeof val || !val) {
throw new Error(name + ' must be a non-empty string.')
}
}
const defaults = {
currency: 'EUR'
}
var generateQrCode = data => {
if (!data) throw new Error('data must be an object.')
data = Object.assign(Object.create(null), defaults, data)
// disabled, we will check this ourselves
// if (isValidIBAN(data.payeeIBAN)) throw new Error('data.payeeIBAN must be a valid IBAN.')
assertNonEmptyString(data.name, 'data.name')
if ('bic' in data) assertNonEmptyString(data.bic, 'data.bic')
if ('number' !== typeof data.amount) throw new Error('data.amount must be a number.')
if (data.amount < 0.01 || data.amount > 999999999.99) {
throw new Error('data.amount must be >=0.01 and <=999999999.99.')
}
if ('purposeCode' in data) {
assertNonEmptyString(data.purposeCode, 'data.purposeCode')
}
if ('structuredReference' in data) {
assertNonEmptyString(data.structuredReference, 'data.structuredReference')
}
if ('unstructuredReference' in data) {
assertNonEmptyString(data.unstructuredReference, 'data.unstructuredReference')
// todo: validate <=140 chars
}
if (('structuredReference' in data) && ('unstructuredReference' in data)) {
throw new Error('Use either data.structuredReference or data.unstructuredReference.')
}
if ('information' in data) {
assertNonEmptyString(data.information, 'data.information')
}
return [
SERVICE_TAG,
VERSION,
CHARACTER_SET,
IDENTIFICATION_CODE,
data.bic, // todo: validate 8/11 chars
data.name, // todo: validate <=70 chars
electronicFormat(data.iban),
data.currency + data.amount.toFixed(2),
data.purposeCode || '',
data.structuredReference || '',
data.unstructuredReference || '',
data.information || ''
].join('\n')
}
// Code below copied from https://github.com/davidshimjs/qrcodejs
/*
The MIT License (MIT)
---------------------
Copyright (c) 2012 davidshimjs
Permission is hereby granted, free of charge,
to any person obtaining a copy of this software and associated documentation files (the "Software"),
to deal in the Software without restriction,
including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense,
and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so,
subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
/**
* @fileoverview
* - Using the 'QRCode for Javascript library'
* - Fixed dataset of 'QRCode for Javascript library' for support full-spec.
* - this library has no dependencies.
*
* @author davidshimjs
* @see <a href="http://www.d-project.com/" target="_blank">http://www.d-project.com/</a>
* @see <a href="http://jeromeetienne.github.com/jquery-qrcode/" target="_blank">http://jeromeetienne.github.com/jquery-qrcode/</a>
*/
var QRCode;
(function () {
//---------------------------------------------------------------------
// QRCode for JavaScript
//
// Copyright (c) 2009 Kazuhiko Arase
//
// URL: http://www.d-project.com/
//
// Licensed under the MIT license:
// http://www.opensource.org/licenses/mit-license.php
//
// The word "QR Code" is registered trademark of
// DENSO WAVE INCORPORATED
// http://www.denso-wave.com/qrcode/faqpatent-e.html
//
//---------------------------------------------------------------------
function QR8bitByte(data) {
this.mode = QRMode.MODE_8BIT_BYTE;
this.data = data;
this.parsedData = [];
// Added to support UTF-8 Characters
for (var i = 0, l = this.data.length; i < l; i++) {
var byteArray = [];
var code = this.data.charCodeAt(i);
if (code > 0x10000) {
byteArray[0] = 0xF0 | ((code & 0x1C0000) >>> 18);
byteArray[1] = 0x80 | ((code & 0x3F000) >>> 12);
byteArray[2] = 0x80 | ((code & 0xFC0) >>> 6);
byteArray[3] = 0x80 | (code & 0x3F);
} else if (code > 0x800) {
byteArray[0] = 0xE0 | ((code & 0xF000) >>> 12);
byteArray[1] = 0x80 | ((code & 0xFC0) >>> 6);
byteArray[2] = 0x80 | (code & 0x3F);
} else if (code > 0x80) {
byteArray[0] = 0xC0 | ((code & 0x7C0) >>> 6);
byteArray[1] = 0x80 | (code & 0x3F);
} else {
byteArray[0] = code;
}
this.parsedData.push(byteArray);
}
this.parsedData = Array.prototype.concat.apply([], this.parsedData);
if (this.parsedData.length != this.data.length) {
this.parsedData.unshift(191);
this.parsedData.unshift(187);
this.parsedData.unshift(239);
}
}
QR8bitByte.prototype = {
getLength: function (buffer) {
return this.parsedData.length;
},
write: function (buffer) {
for (var i = 0, l = this.parsedData.length; i < l; i++) {
buffer.put(this.parsedData[i], 8);
}
}
};
function QRCodeModel(typeNumber, errorCorrectLevel) {
this.typeNumber = typeNumber;
this.errorCorrectLevel = errorCorrectLevel;
this.modules = null;
this.moduleCount = 0;
this.dataCache = null;
this.dataList = [];
}
QRCodeModel.prototype={addData:function(data){var newData=new QR8bitByte(data);this.dataList.push(newData);this.dataCache=null;},isDark:function(row,col){if(row<0||this.moduleCount<=row||col<0||this.moduleCount<=col){throw new Error(row+","+col);}
return this.modules[row][col];},getModuleCount:function(){return this.moduleCount;},make:function(){this.makeImpl(false,this.getBestMaskPattern());},makeImpl:function(test,maskPattern){this.moduleCount=this.typeNumber*4+17;this.modules=new Array(this.moduleCount);for(var row=0;row<this.moduleCount;row++){this.modules[row]=new Array(this.moduleCount);for(var col=0;col<this.moduleCount;col++){this.modules[row][col]=null;}}
this.setupPositionProbePattern(0,0);this.setupPositionProbePattern(this.moduleCount-7,0);this.setupPositionProbePattern(0,this.moduleCount-7);this.setupPositionAdjustPattern();this.setupTimingPattern();this.setupTypeInfo(test,maskPattern);if(this.typeNumber>=7){this.setupTypeNumber(test);}
if(this.dataCache==null){this.dataCache=QRCodeModel.createData(this.typeNumber,this.errorCorrectLevel,this.dataList);}
this.mapData(this.dataCache,maskPattern);},setupPositionProbePattern:function(row,col){for(var r=-1;r<=7;r++){if(row+r<=-1||this.moduleCount<=row+r)continue;for(var c=-1;c<=7;c++){if(col+c<=-1||this.moduleCount<=col+c)continue;if((0<=r&&r<=6&&(c==0||c==6))||(0<=c&&c<=6&&(r==0||r==6))||(2<=r&&r<=4&&2<=c&&c<=4)){this.modules[row+r][col+c]=true;}else{this.modules[row+r][col+c]=false;}}}},getBestMaskPattern:function(){var minLostPoint=0;var pattern=0;for(var i=0;i<8;i++){this.makeImpl(true,i);var lostPoint=QRUtil.getLostPoint(this);if(i==0||minLostPoint>lostPoint){minLostPoint=lostPoint;pattern=i;}}
return pattern;},createMovieClip:function(target_mc,instance_name,depth){var qr_mc=target_mc.createEmptyMovieClip(instance_name,depth);var cs=1;this.make();for(var row=0;row<this.modules.length;row++){var y=row*cs;for(var col=0;col<this.modules[row].length;col++){var x=col*cs;var dark=this.modules[row][col];if(dark){qr_mc.beginFill(0,100);qr_mc.moveTo(x,y);qr_mc.lineTo(x+cs,y);qr_mc.lineTo(x+cs,y+cs);qr_mc.lineTo(x,y+cs);qr_mc.endFill();}}}
return qr_mc;},setupTimingPattern:function(){for(var r=8;r<this.moduleCount-8;r++){if(this.modules[r][6]!=null){continue;}
this.modules[r][6]=(r%2==0);}
for(var c=8;c<this.moduleCount-8;c++){if(this.modules[6][c]!=null){continue;}
this.modules[6][c]=(c%2==0);}},setupPositionAdjustPattern:function(){var pos=QRUtil.getPatternPosition(this.typeNumber);for(var i=0;i<pos.length;i++){for(var j=0;j<pos.length;j++){var row=pos[i];var col=pos[j];if(this.modules[row][col]!=null){continue;}
for(var r=-2;r<=2;r++){for(var c=-2;c<=2;c++){if(r==-2||r==2||c==-2||c==2||(r==0&&c==0)){this.modules[row+r][col+c]=true;}else{this.modules[row+r][col+c]=false;}}}}}},setupTypeNumber:function(test){var bits=QRUtil.getBCHTypeNumber(this.typeNumber);for(var i=0;i<18;i++){var mod=(!test&&((bits>>i)&1)==1);this.modules[Math.floor(i/3)][i%3+this.moduleCount-8-3]=mod;}
for(var i=0;i<18;i++){var mod=(!test&&((bits>>i)&1)==1);this.modules[i%3+this.moduleCount-8-3][Math.floor(i/3)]=mod;}},setupTypeInfo:function(test,maskPattern){var data=(this.errorCorrectLevel<<3)|maskPattern;var bits=QRUtil.getBCHTypeInfo(data);for(var i=0;i<15;i++){var mod=(!test&&((bits>>i)&1)==1);if(i<6){this.modules[i][8]=mod;}else if(i<8){this.modules[i+1][8]=mod;}else{this.modules[this.moduleCount-15+i][8]=mod;}}
for(var i=0;i<15;i++){var mod=(!test&&((bits>>i)&1)==1);if(i<8){this.modules[8][this.moduleCount-i-1]=mod;}else if(i<9){this.modules[8][15-i-1+1]=mod;}else{this.modules[8][15-i-1]=mod;}}
this.modules[this.moduleCount-8][8]=(!test);},mapData:function(data,maskPattern){var inc=-1;var row=this.moduleCount-1;var bitIndex=7;var byteIndex=0;for(var col=this.moduleCount-1;col>0;col-=2){if(col==6)col--;while(true){for(var c=0;c<2;c++){if(this.modules[row][col-c]==null){var dark=false;if(byteIndex<data.length){dark=(((data[byteIndex]>>>bitIndex)&1)==1);}
var mask=QRUtil.getMask(maskPattern,row,col-c);if(mask){dark=!dark;}
this.modules[row][col-c]=dark;bitIndex--;if(bitIndex==-1){byteIndex++;bitIndex=7;}}}
row+=inc;if(row<0||this.moduleCount<=row){row-=inc;inc=-inc;break;}}}}};QRCodeModel.PAD0=0xEC;QRCodeModel.PAD1=0x11;QRCodeModel.createData=function(typeNumber,errorCorrectLevel,dataList){var rsBlocks=QRRSBlock.getRSBlocks(typeNumber,errorCorrectLevel);var buffer=new QRBitBuffer();for(var i=0;i<dataList.length;i++){var data=dataList[i];buffer.put(data.mode,4);buffer.put(data.getLength(),QRUtil.getLengthInBits(data.mode,typeNumber));data.write(buffer);}
var totalDataCount=0;for(var i=0;i<rsBlocks.length;i++){totalDataCount+=rsBlocks[i].dataCount;}
if(buffer.getLengthInBits()>totalDataCount*8){throw new Error("code length overflow. ("
+buffer.getLengthInBits()
+">"
+totalDataCount*8
+")");}
if(buffer.getLengthInBits()+4<=totalDataCount*8){buffer.put(0,4);}
while(buffer.getLengthInBits()%8!=0){buffer.putBit(false);}
while(true){if(buffer.getLengthInBits()>=totalDataCount*8){break;}
buffer.put(QRCodeModel.PAD0,8);if(buffer.getLengthInBits()>=totalDataCount*8){break;}
buffer.put(QRCodeModel.PAD1,8);}
return QRCodeModel.createBytes(buffer,rsBlocks);};QRCodeModel.createBytes=function(buffer,rsBlocks){var offset=0;var maxDcCount=0;var maxEcCount=0;var dcdata=new Array(rsBlocks.length);var ecdata=new Array(rsBlocks.length);for(var r=0;r<rsBlocks.length;r++){var dcCount=rsBlocks[r].dataCount;var ecCount=rsBlocks[r].totalCount-dcCount;maxDcCount=Math.max(maxDcCount,dcCount);maxEcCount=Math.max(maxEcCount,ecCount);dcdata[r]=new Array(dcCount);for(var i=0;i<dcdata[r].length;i++){dcdata[r][i]=0xff&buffer.buffer[i+offset];}
offset+=dcCount;var rsPoly=QRUtil.getErrorCorrectPolynomial(ecCount);var rawPoly=new QRPolynomial(dcdata[r],rsPoly.getLength()-1);var modPoly=rawPoly.mod(rsPoly);ecdata[r]=new Array(rsPoly.getLength()-1);for(var i=0;i<ecdata[r].length;i++){var modIndex=i+modPoly.getLength()-ecdata[r].length;ecdata[r][i]=(modIndex>=0)?modPoly.get(modIndex):0;}}
var totalCodeCount=0;for(var i=0;i<rsBlocks.length;i++){totalCodeCount+=rsBlocks[i].totalCount;}
var data=new Array(totalCodeCount);var index=0;for(var i=0;i<maxDcCount;i++){for(var r=0;r<rsBlocks.length;r++){if(i<dcdata[r].length){data[index++]=dcdata[r][i];}}}
for(var i=0;i<maxEcCount;i++){for(var r=0;r<rsBlocks.length;r++){if(i<ecdata[r].length){data[index++]=ecdata[r][i];}}}
return data;};var QRMode={MODE_NUMBER:1<<0,MODE_ALPHA_NUM:1<<1,MODE_8BIT_BYTE:1<<2,MODE_KANJI:1<<3};var QRErrorCorrectLevel={L:1,M:0,Q:3,H:2};var QRMaskPattern={PATTERN000:0,PATTERN001:1,PATTERN010:2,PATTERN011:3,PATTERN100:4,PATTERN101:5,PATTERN110:6,PATTERN111:7};var QRUtil={PATTERN_POSITION_TABLE:[[],[6,18],[6,22],[6,26],[6,30],[6,34],[6,22,38],[6,24,42],[6,26,46],[6,28,50],[6,30,54],[6,32,58],[6,34,62],[6,26,46,66],[6,26,48,70],[6,26,50,74],[6,30,54,78],[6,30,56,82],[6,30,58,86],[6,34,62,90],[6,28,50,72,94],[6,26,50,74,98],[6,30,54,78,102],[6,28,54,80,106],[6,32,58,84,110],[6,30,58,86,114],[6,34,62,90,118],[6,26,50,74,98,122],[6,30,54,78,102,126],[6,26,52,78,104,130],[6,30,56,82,108,134],[6,34,60,86,112,138],[6,30,58,86,114,142],[6,34,62,90,118,146],[6,30,54,78,102,126,150],[6,24,50,76,102,128,154],[6,28,54,80,106,132,158],[6,32,58,84,110,136,162],[6,26,54,82,110,138,166],[6,30,58,86,114,142,170]],G15:(1<<10)|(1<<8)|(1<<5)|(1<<4)|(1<<2)|(1<<1)|(1<<0),G18:(1<<12)|(1<<11)|(1<<10)|(1<<9)|(1<<8)|(1<<5)|(1<<2)|(1<<0),G15_MASK:(1<<14)|(1<<12)|(1<<10)|(1<<4)|(1<<1),getBCHTypeInfo:function(data){var d=data<<10;while(QRUtil.getBCHDigit(d)-QRUtil.getBCHDigit(QRUtil.G15)>=0){d^=(QRUtil.G15<<(QRUtil.getBCHDigit(d)-QRUtil.getBCHDigit(QRUtil.G15)));}
return((data<<10)|d)^QRUtil.G15_MASK;},getBCHTypeNumber:function(data){var d=data<<12;while(QRUtil.getBCHDigit(d)-QRUtil.getBCHDigit(QRUtil.G18)>=0){d^=(QRUtil.G18<<(QRUtil.getBCHDigit(d)-QRUtil.getBCHDigit(QRUtil.G18)));}
return(data<<12)|d;},getBCHDigit:function(data){var digit=0;while(data!=0){digit++;data>>>=1;}
return digit;},getPatternPosition:function(typeNumber){return QRUtil.PATTERN_POSITION_TABLE[typeNumber-1];},getMask:function(maskPattern,i,j){switch(maskPattern){case QRMaskPattern.PATTERN000:return(i+j)%2==0;case QRMaskPattern.PATTERN001:return i%2==0;case QRMaskPattern.PATTERN010:return j%3==0;case QRMaskPattern.PATTERN011:return(i+j)%3==0;case QRMaskPattern.PATTERN100:return(Math.floor(i/2)+Math.floor(j/3))%2==0;case QRMaskPattern.PATTERN101:return(i*j)%2+(i*j)%3==0;case QRMaskPattern.PATTERN110:return((i*j)%2+(i*j)%3)%2==0;case QRMaskPattern.PATTERN111:return((i*j)%3+(i+j)%2)%2==0;default:throw new Error("bad maskPattern:"+maskPattern);}},getErrorCorrectPolynomial:function(errorCorrectLength){var a=new QRPolynomial([1],0);for(var i=0;i<errorCorrectLength;i++){a=a.multiply(new QRPolynomial([1,QRMath.gexp(i)],0));}
return a;},getLengthInBits:function(mode,type){if(1<=type&&type<10){switch(mode){case QRMode.MODE_NUMBER:return 10;case QRMode.MODE_ALPHA_NUM:return 9;case QRMode.MODE_8BIT_BYTE:return 8;case QRMode.MODE_KANJI:return 8;default:throw new Error("mode:"+mode);}}else if(type<27){switch(mode){case QRMode.MODE_NUMBER:return 12;case QRMode.MODE_ALPHA_NUM:return 11;case QRMode.MODE_8BIT_BYTE:return 16;case QRMode.MODE_KANJI:return 10;default:throw new Error("mode:"+mode);}}else if(type<41){switch(mode){case QRMode.MODE_NUMBER:return 14;case QRMode.MODE_ALPHA_NUM:return 13;case QRMode.MODE_8BIT_BYTE:return 16;case QRMode.MODE_KANJI:return 12;default:throw new Error("mode:"+mode);}}else{throw new Error("type:"+type);}},getLostPoint:function(qrCode){var moduleCount=qrCode.getModuleCount();var lostPoint=0;for(var row=0;row<moduleCount;row++){for(var col=0;col<moduleCount;col++){var sameCount=0;var dark=qrCode.isDark(row,col);for(var r=-1;r<=1;r++){if(row+r<0||moduleCount<=row+r){continue;}
for(var c=-1;c<=1;c++){if(col+c<0||moduleCount<=col+c){continue;}
if(r==0&&c==0){continue;}
if(dark==qrCode.isDark(row+r,col+c)){sameCount++;}}}
if(sameCount>5){lostPoint+=(3+sameCount-5);}}}
for(var row=0;row<moduleCount-1;row++){for(var col=0;col<moduleCount-1;col++){var count=0;if(qrCode.isDark(row,col))count++;if(qrCode.isDark(row+1,col))count++;if(qrCode.isDark(row,col+1))count++;if(qrCode.isDark(row+1,col+1))count++;if(count==0||count==4){lostPoint+=3;}}}
for(var row=0;row<moduleCount;row++){for(var col=0;col<moduleCount-6;col++){if(qrCode.isDark(row,col)&&!qrCode.isDark(row,col+1)&&qrCode.isDark(row,col+2)&&qrCode.isDark(row,col+3)&&qrCode.isDark(row,col+4)&&!qrCode.isDark(row,col+5)&&qrCode.isDark(row,col+6)){lostPoint+=40;}}}
for(var col=0;col<moduleCount;col++){for(var row=0;row<moduleCount-6;row++){if(qrCode.isDark(row,col)&&!qrCode.isDark(row+1,col)&&qrCode.isDark(row+2,col)&&qrCode.isDark(row+3,col)&&qrCode.isDark(row+4,col)&&!qrCode.isDark(row+5,col)&&qrCode.isDark(row+6,col)){lostPoint+=40;}}}
var darkCount=0;for(var col=0;col<moduleCount;col++){for(var row=0;row<moduleCount;row++){if(qrCode.isDark(row,col)){darkCount++;}}}
var ratio=Math.abs(100*darkCount/moduleCount/moduleCount-50)/5;lostPoint+=ratio*10;return lostPoint;}};var QRMath={glog:function(n){if(n<1){throw new Error("glog("+n+")");}
return QRMath.LOG_TABLE[n];},gexp:function(n){while(n<0){n+=255;}
while(n>=256){n-=255;}
return QRMath.EXP_TABLE[n];},EXP_TABLE:new Array(256),LOG_TABLE:new Array(256)};for(var i=0;i<8;i++){QRMath.EXP_TABLE[i]=1<<i;}
for(var i=8;i<256;i++){QRMath.EXP_TABLE[i]=QRMath.EXP_TABLE[i-4]^QRMath.EXP_TABLE[i-5]^QRMath.EXP_TABLE[i-6]^QRMath.EXP_TABLE[i-8];}
for(var i=0;i<255;i++){QRMath.LOG_TABLE[QRMath.EXP_TABLE[i]]=i;}
function QRPolynomial(num,shift){if(num.length==undefined){throw new Error(num.length+"/"+shift);}
var offset=0;while(offset<num.length&&num[offset]==0){offset++;}
this.num=new Array(num.length-offset+shift);for(var i=0;i<num.length-offset;i++){this.num[i]=num[i+offset];}}
QRPolynomial.prototype={get:function(index){return this.num[index];},getLength:function(){return this.num.length;},multiply:function(e){var num=new Array(this.getLength()+e.getLength()-1);for(var i=0;i<this.getLength();i++){for(var j=0;j<e.getLength();j++){num[i+j]^=QRMath.gexp(QRMath.glog(this.get(i))+QRMath.glog(e.get(j)));}}
return new QRPolynomial(num,0);},mod:function(e){if(this.getLength()-e.getLength()<0){return this;}
var ratio=QRMath.glog(this.get(0))-QRMath.glog(e.get(0));var num=new Array(this.getLength());for(var i=0;i<this.getLength();i++){num[i]=this.get(i);}
for(var i=0;i<e.getLength();i++){num[i]^=QRMath.gexp(QRMath.glog(e.get(i))+ratio);}
return new QRPolynomial(num,0).mod(e);}};function QRRSBlock(totalCount,dataCount){this.totalCount=totalCount;this.dataCount=dataCount;}
QRRSBlock.RS_BLOCK_TABLE=[[1,26,19],[1,26,16],[1,26,13],[1,26,9],[1,44,34],[1,44,28],[1,44,22],[1,44,16],[1,70,55],[1,70,44],[2,35,17],[2,35,13],[1,100,80],[2,50,32],[2,50,24],[4,25,9],[1,134,108],[2,67,43],[2,33,15,2,34,16],[2,33,11,2,34,12],[2,86,68],[4,43,27],[4,43,19],[4,43,15],[2,98,78],[4,49,31],[2,32,14,4,33,15],[4,39,13,1,40,14],[2,121,97],[2,60,38,2,61,39],[4,40,18,2,41,19],[4,40,14,2,41,15],[2,146,116],[3,58,36,2,59,37],[4,36,16,4,37,17],[4,36,12,4,37,13],[2,86,68,2,87,69],[4,69,43,1,70,44],[6,43,19,2,44,20],[6,43,15,2,44,16],[4,101,81],[1,80,50,4,81,51],[4,50,22,4,51,23],[3,36,12,8,37,13],[2,116,92,2,117,93],[6,58,36,2,59,37],[4,46,20,6,47,21],[7,42,14,4,43,15],[4,133,107],[8,59,37,1,60,38],[8,44,20,4,45,21],[12,33,11,4,34,12],[3,145,115,1,146,116],[4,64,40,5,65,41],[11,36,16,5,37,17],[11,36,12,5,37,13],[5,109,87,1,110,88],[5,65,41,5,66,42],[5,54,24,7,55,25],[11,36,12],[5,122,98,1,123,99],[7,73,45,3,74,46],[15,43,19,2,44,20],[3,45,15,13,46,16],[1,135,107,5,136,108],[10,74,46,1,75,47],[1,50,22,15,51,23],[2,42,14,17,43,15],[5,150,120,1,151,121],[9,69,43,4,70,44],[17,50,22,1,51,23],[2,42,14,19,43,15],[3,141,113,4,142,114],[3,70,44,11,71,45],[17,47,21,4,48,22],[9,39,13,16,40,14],[3,135,107,5,136,108],[3,67,41,13,68,42],[15,54,24,5,55,25],[15,43,15,10,44,16],[4,144,116,4,145,117],[17,68,42],[17,50,22,6,51,23],[19,46,16,6,47,17],[2,139,111,7,140,112],[17,74,46],[7,54,24,16,55,25],[34,37,13],[4,151,121,5,152,122],[4,75,47,14,76,48],[11,54,24,14,55,25],[16,45,15,14,46,16],[6,147,117,4,148,118],[6,73,45,14,74,46],[11,54,24,16,55,25],[30,46,16,2,47,17],[8,132,106,4,133,107],[8,75,47,13,76,48],[7,54,24,22,55,25],[22,45,15,13,46,16],[10,142,114,2,143,115],[19,74,46,4,75,47],[28,50,22,6,51,23],[33,46,16,4,47,17],[8,152,122,4,153,123],[22,73,45,3,74,46],[8,53,23,26,54,24],[12,45,15,28,46,16],[3,147,117,10,148,118],[3,73,45,23,74,46],[4,54,24,31,55,25],[11,45,15,31,46,16],[7,146,116,7,147,117],[21,73,45,7,74,46],[1,53,23,37,54,24],[19,45,15,26,46,16],[5,145,115,10,146,116],[19,75,47,10,76,48],[15,54,24,25,55,25],[23,45,15,25,46,16],[13,145,115,3,146,116],[2,74,46,29,75,47],[42,54,24,1,55,25],[23,45,15,28,46,16],[17,145,115],[10,74,46,23,75,47],[10,54,24,35,55,25],[19,45,15,35,46,16],[17,145,115,1,146,116],[14,74,46,21,75,47],[29,54,24,19,55,25],[11,45,15,46,46,16],[13,145,115,6,146,116],[14,74,46,23,75,47],[44,54,24,7,55,25],[59,46,16,1,47,17],[12,151,121,7,152,122],[12,75,47,26,76,48],[39,54,24,14,55,25],[22,45,15,41,46,16],[6,151,121,14,152,122],[6,75,47,34,76,48],[46,54,24,10,55,25],[2,45,15,64,46,16],[17,152,122,4,153,123],[29,74,46,14,75,47],[49,54,24,10,55,25],[24,45,15,46,46,16],[4,152,122,18,153,123],[13,74,46,32,75,47],[48,54,24,14,55,25],[42,45,15,32,46,16],[20,147,117,4,148,118],[40,75,47,7,76,48],[43,54,24,22,55,25],[10,45,15,67,46,16],[19,148,118,6,149,119],[18,75,47,31,76,48],[34,54,24,34,55,25],[20,45,15,61,46,16]];QRRSBlock.getRSBlocks=function(typeNumber,errorCorrectLevel){var rsBlock=QRRSBlock.getRsBlockTable(typeNumber,errorCorrectLevel);if(rsBlock==undefined){throw new Error("bad rs block @ typeNumber:"+typeNumber+"/errorCorrectLevel:"+errorCorrectLevel);}
var length=rsBlock.length/3;var list=[];for(var i=0;i<length;i++){var count=rsBlock[i*3+0];var totalCount=rsBlock[i*3+1];var dataCount=rsBlock[i*3+2];for(var j=0;j<count;j++){list.push(new QRRSBlock(totalCount,dataCount));}}
return list;};QRRSBlock.getRsBlockTable=function(typeNumber,errorCorrectLevel){switch(errorCorrectLevel){case QRErrorCorrectLevel.L:return QRRSBlock.RS_BLOCK_TABLE[(typeNumber-1)*4+0];case QRErrorCorrectLevel.M:return QRRSBlock.RS_BLOCK_TABLE[(typeNumber-1)*4+1];case QRErrorCorrectLevel.Q:return QRRSBlock.RS_BLOCK_TABLE[(typeNumber-1)*4+2];case QRErrorCorrectLevel.H:return QRRSBlock.RS_BLOCK_TABLE[(typeNumber-1)*4+3];default:return undefined;}};function QRBitBuffer(){this.buffer=[];this.length=0;}
QRBitBuffer.prototype={get:function(index){var bufIndex=Math.floor(index/8);return((this.buffer[bufIndex]>>>(7-index%8))&1)==1;},put:function(num,length){for(var i=0;i<length;i++){this.putBit(((num>>>(length-i-1))&1)==1);}},getLengthInBits:function(){return this.length;},putBit:function(bit){var bufIndex=Math.floor(this.length/8);if(this.buffer.length<=bufIndex){this.buffer.push(0);}
if(bit){this.buffer[bufIndex]|=(0x80>>>(this.length%8));}
this.length++;}};var QRCodeLimitLength=[[17,14,11,7],[32,26,20,14],[53,42,32,24],[78,62,46,34],[106,84,60,44],[134,106,74,58],[154,122,86,64],[192,152,108,84],[230,180,130,98],[271,213,151,119],[321,251,177,137],[367,287,203,155],[425,331,241,177],[458,362,258,194],[520,412,292,220],[586,450,322,250],[644,504,364,280],[718,560,394,310],[792,624,442,338],[858,666,482,382],[929,711,509,403],[1003,779,565,439],[1091,857,611,461],[1171,911,661,511],[1273,997,715,535],[1367,1059,751,593],[1465,1125,805,625],[1528,1190,868,658],[1628,1264,908,698],[1732,1370,982,742],[1840,1452,1030,790],[1952,1538,1112,842],[2068,1628,1168,898],[2188,1722,1228,958],[2303,1809,1283,983],[2431,1911,1351,1051],[2563,1989,1423,1093],[2699,2099,1499,1139],[2809,2213,1579,1219],[2953,2331,1663,1273]];
function _isSupportCanvas() {
return typeof CanvasRenderingContext2D != "undefined";
}
// android 2.x doesn't support Data-URI spec
function _getAndroid() {
var android = false;
var sAgent = navigator.userAgent;
if (/android/i.test(sAgent)) { // android
android = true;
var aMat = sAgent.toString().match(/android ([0-9]\.[0-9])/i);
if (aMat && aMat[1]) {
android = parseFloat(aMat[1]);
}
}
return android;
}
var svgDrawer = (function() {
var Drawing = function (el, htOption) {
this._el = el;
this._htOption = htOption;
};
Drawing.prototype.draw = function (oQRCode) {
var _htOption = this._htOption;
var _el = this._el;
var nCount = oQRCode.getModuleCount();
var nWidth = Math.floor(_htOption.width / nCount);
var nHeight = Math.floor(_htOption.height / nCount);
this.clear();
function makeSVG(tag, attrs) {
var el = document.createElementNS('http://www.w3.org/2000/svg', tag);
for (var k in attrs)
if (attrs.hasOwnProperty(k)) el.setAttribute(k, attrs[k]);
return el;
}
var svg = makeSVG("svg" , {'viewBox': '0 0 ' + String(nCount) + " " + String(nCount), 'width': '100%', 'height': '100%', 'fill': _htOption.colorLight});
svg.setAttributeNS("http://www.w3.org/2000/xmlns/", "xmlns:xlink", "http://www.w3.org/1999/xlink");
_el.appendChild(svg);
svg.appendChild(makeSVG("rect", {"fill": _htOption.colorLight, "width": "100%", "height": "100%"}));
svg.appendChild(makeSVG("rect", {"fill": _htOption.colorDark, "width": "1", "height": "1", "id": "template"}));
for (var row = 0; row < nCount; row++) {
for (var col = 0; col < nCount; col++) {
if (oQRCode.isDark(row, col)) {
var child = makeSVG("use", {"x": String(col), "y": String(row)});
child.setAttributeNS("http://www.w3.org/1999/xlink", "href", "#template")
svg.appendChild(child);
}
}
}
};
Drawing.prototype.clear = function () {
while (this._el.hasChildNodes())
this._el.removeChild(this._el.lastChild);
};
return Drawing;
})();
var useSVG = document.documentElement.tagName.toLowerCase() === "svg";
// Drawing in DOM by using Table tag
var Drawing = useSVG ? svgDrawer : !_isSupportCanvas() ? (function () {
var Drawing = function (el, htOption) {
this._el = el;
this._htOption = htOption;
};
/**
* Draw the QRCode
*
* @param {QRCode} oQRCode
*/
Drawing.prototype.draw = function (oQRCode) {
var _htOption = this._htOption;
var _el = this._el;
var nCount = oQRCode.getModuleCount();
var nWidth = Math.floor(_htOption.width / nCount);
var nHeight = Math.floor(_htOption.height / nCount);
var aHTML = ['<table style="border:0;border-collapse:collapse;">'];
for (var row = 0; row < nCount; row++) {
aHTML.push('<tr>');
for (var col = 0; col < nCount; col++) {
aHTML.push('<td style="border:0;border-collapse:collapse;padding:0;margin:0;width:' + nWidth + 'px;height:' + nHeight + 'px;background-color:' + (oQRCode.isDark(row, col) ? _htOption.colorDark : _htOption.colorLight) + ';"></td>');
}
aHTML.push('</tr>');
}
aHTML.push('</table>');
_el.innerHTML = aHTML.join('');
// Fix the margin values as real size.
var elTable = _el.childNodes[0];
var nLeftMarginTable = (_htOption.width - elTable.offsetWidth) / 2;
var nTopMarginTable = (_htOption.height - elTable.offsetHeight) / 2;
if (nLeftMarginTable > 0 && nTopMarginTable > 0) {
elTable.style.margin = nTopMarginTable + "px " + nLeftMarginTable + "px";
}
};
/**
* Clear the QRCode
*/
Drawing.prototype.clear = function () {
this._el.innerHTML = '';
};
return Drawing;
})() : (function () { // Drawing in Canvas
function _onMakeImage() {
this._elImage.src = this._elCanvas.toDataURL("image/png");
this._elImage.style.display = "block";
this._elCanvas.style.display = "none";
}
// Android 2.1 bug workaround
// http://code.google.com/p/android/issues/detail?id=5141
if (this._android && this._android <= 2.1) {
var factor = 1 / window.devicePixelRatio;
var drawImage = CanvasRenderingContext2D.prototype.drawImage;
CanvasRenderingContext2D.prototype.drawImage = function (image, sx, sy, sw, sh, dx, dy, dw, dh) {
if (("nodeName" in image) && /img/i.test(image.nodeName)) {
for (var i = arguments.length - 1; i >= 1; i--) {
arguments[i] = arguments[i] * factor;
}
} else if (typeof dw == "undefined") {
arguments[1] *= factor;
arguments[2] *= factor;
arguments[3] *= factor;
arguments[4] *= factor;
}
drawImage.apply(this, arguments);
};
}
/**
* Check whether the user's browser supports Data URI or not
*
* @private
* @param {Function} fSuccess Occurs if it supports Data URI
* @param {Function} fFail Occurs if it doesn't support Data URI
*/
function _safeSetDataURI(fSuccess, fFail) {
var self = this;
self._fFail = fFail;
self._fSuccess = fSuccess;
// Check it just once
if (self._bSupportDataURI === null) {
var el = document.createElement("img");
var fOnError = function() {
self._bSupportDataURI = false;
if (self._fFail) {
self._fFail.call(self);
}
};
var fOnSuccess = function() {
self._bSupportDataURI = true;
if (self._fSuccess) {
self._fSuccess.call(self);
}
};
el.onabort = fOnError;
el.onerror = fOnError;
el.onload = fOnSuccess;
el.src = "data:image/gif;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg=="; // the Image contains 1px data.
return;
} else if (self._bSupportDataURI === true && self._fSuccess) {
self._fSuccess.call(self);
} else if (self._bSupportDataURI === false && self._fFail) {
self._fFail.call(self);
}
};
/**
* Drawing QRCode by using canvas
*
* @constructor
* @param {HTMLElement} el
* @param {Object} htOption QRCode Options
*/
var Drawing = function (el, htOption) {
this._bIsPainted = false;
this._android = _getAndroid();
this._htOption = htOption;
this._elCanvas = document.createElement("canvas");
this._elCanvas.width = htOption.width;
this._elCanvas.height = htOption.height;
el.appendChild(this._elCanvas);
this._el = el;
this._oContext = this._elCanvas.getContext("2d");
this._bIsPainted = false;
this._elImage = document.createElement("img");
this._elImage.alt = "Scan me!";
this._elImage.style.display = "none";
this._el.appendChild(this._elImage);
this._bSupportDataURI = null;
};
/**
* Draw the QRCode
*
* @param {QRCode} oQRCode
*/
Drawing.prototype.draw = function (oQRCode) {
var _elImage = this._elImage;
var _oContext = this._oContext;
var _htOption = this._htOption;
var nCount = oQRCode.getModuleCount();
var nWidth = _htOption.width / nCount;
var nHeight = _htOption.height / nCount;
var nRoundedWidth = Math.round(nWidth);
var nRoundedHeight = Math.round(nHeight);
_elImage.style.display = "none";
this.clear();
for (var row = 0; row < nCount; row++) {
for (var col = 0; col < nCount; col++) {
var bIsDark = oQRCode.isDark(row, col);
var nLeft = col * nWidth;
var nTop = row * nHeight;
_oContext.strokeStyle = bIsDark ? _htOption.colorDark : _htOption.colorLight;
_oContext.lineWidth = 1;
_oContext.fillStyle = bIsDark ? _htOption.colorDark : _htOption.colorLight;
_oContext.fillRect(nLeft, nTop, nWidth, nHeight);
// 안티 앨리어싱 방지 처리
_oContext.strokeRect(
Math.floor(nLeft) + 0.5,
Math.floor(nTop) + 0.5,
nRoundedWidth,
nRoundedHeight
);
_oContext.strokeRect(
Math.ceil(nLeft) - 0.5,
Math.ceil(nTop) - 0.5,
nRoundedWidth,
nRoundedHeight
);
}
}
this._bIsPainted = true;
};
/**
* Make the image from Canvas if the browser supports Data URI.
*/
Drawing.prototype.makeImage = function () {
if (this._bIsPainted) {
_safeSetDataURI.call(this, _onMakeImage);
}
};
/**
* Return whether the QRCode is painted or not
*
* @return {Boolean}
*/
Drawing.prototype.isPainted = function () {
return this._bIsPainted;
};
/**
* Clear the QRCode
*/
Drawing.prototype.clear = function () {
this._oContext.clearRect(0, 0, this._elCanvas.width, this._elCanvas.height);
this._bIsPainted = false;
};
/**
* @private
* @param {Number} nNumber
*/
Drawing.prototype.round = function (nNumber) {
if (!nNumber) {
return nNumber;
}
return Math.floor(nNumber * 1000) / 1000;
};
return Drawing;
})();
/**
* Get the type by string length
*
* @private
* @param {String} sText
* @param {Number} nCorrectLevel
* @return {Number} type
*/
function _getTypeNumber(sText, nCorrectLevel) {
var nType = 1;
var length = _getUTF8Length(sText);
for (var i = 0, len = QRCodeLimitLength.length; i <= len; i++) {
var nLimit = 0;
switch (nCorrectLevel) {
case QRErrorCorrectLevel.L :
nLimit = QRCodeLimitLength[i][0];
break;
case QRErrorCorrectLevel.M :
nLimit = QRCodeLimitLength[i][1];
break;
case QRErrorCorrectLevel.Q :
nLimit = QRCodeLimitLength[i][2];
break;
case QRErrorCorrectLevel.H :
nLimit = QRCodeLimitLength[i][3];
break;
}
if (length <= nLimit) {
break;
} else {
nType++;
}
}
if (nType > QRCodeLimitLength.length) {
throw new Error("Too long data");
}
return nType;
}
function _getUTF8Length(sText) {
var replacedText = encodeURI(sText).toString().replace(/\%[0-9a-fA-F]{2}/g, 'a');
return replacedText.length + (replacedText.length != sText ? 3 : 0);
}
/**
* @class QRCode
* @constructor
* @example
* new QRCode(document.getElementById("test"), "http://jindo.dev.naver.com/collie");
*
* @example
* var oQRCode = new QRCode("test", {
* text : "http://naver.com",
* width : 128,
* height : 128
* });
*
* oQRCode.clear(); // Clear the QRCode.
* oQRCode.makeCode("http://map.naver.com"); // Re-create the QRCode.
*
* @param {HTMLElement|String} el target element or 'id' attribute of element.
* @param {Object|String} vOption
* @param {String} vOption.text QRCode link data
* @param {Number} [vOption.width=256]
* @param {Number} [vOption.height=256]
* @param {String} [vOption.colorDark="#000000"]
* @param {String} [vOption.colorLight="#ffffff"]
* @param {QRCode.CorrectLevel} [vOption.correctLevel=QRCode.CorrectLevel.H] [L|M|Q|H]
*/
QRCode = function (el, vOption) {
this._htOption = {
width : 256,
height : 256,
typeNumber : 4,
colorDark : "#000000",
colorLight : "#ffffff",
correctLevel : QRErrorCorrectLevel.H
};
if (typeof vOption === 'string') {
vOption = {
text : vOption
};
}
// Overwrites options
if (vOption) {
for (var i in vOption) {
this._htOption[i] = vOption[i];
}
}
if (typeof el == "string") {
el = document.getElementById(el);
}
if (this._htOption.useSVG) {
Drawing = svgDrawer;
}
this._android = _getAndroid();
this._el = el;
this._oQRCode = null;
this._oDrawing = new Drawing(this._el, this._htOption);
if (this._htOption.text) {
this.makeCode(this._htOption.text);
}
};
/**
* Make the QRCode
*
* @param {String} sText link data
*/
QRCode.prototype.makeCode = function (sText) {
this._oQRCode = new QRCodeModel(_getTypeNumber(sText, this._htOption.correctLevel), this._htOption.correctLevel);
this._oQRCode.addData(sText);
this._oQRCode.make();
this._el.title = sText;
this._oDrawing.draw(this._oQRCode);
this.makeImage();
};
/**
* Make the Image from Canvas element
* - It occurs automatically
* - Android below 3 doesn't support Data-URI spec.
*
* @private
*/
QRCode.prototype.makeImage = function () {
if (typeof this._oDrawing.makeImage == "function" && (!this._android || this._android >= 3)) {
this._oDrawing.makeImage();
}
};
/**
* Clear the QRCode
*/
QRCode.prototype.clear = function () {
this._oDrawing.clear();
};
/**
* @name QRCode.CorrectLevel
*/
QRCode.CorrectLevel = QRErrorCorrectLevel;
})();

View file

@ -1,7 +0,0 @@
$(function() {
return $.getJSON('./quotes.json', function(data) {
var quote;
quote = data[Math.floor(Math.random() * data.length)];
return $('#quote').append("<h3>" + quote.title + "</h3><p>" + quote.description + "</p>");
});
});

View file

@ -0,0 +1,78 @@
function regenerateQR() {
let username_field = document.getElementById('tabtopup-username');
let amount_field = document.getElementById('tabtopup-amount');
let qr_container = document.getElementById("tabtopup-qrcode");
let amountUnparsed = amount_field.value;
let username = username_field.value;
username_field.classList.remove('is-danger');
amount_field.classList.remove('is-danger');
qr_container.textContent = '';
let message_container = document.getElementById('tabtopup-message');
if (username == '') {
message_container.textContent = 'Please fill in username.';
username_field.classList.add('is-danger');
return;
}
else if (!(/^[a-z0-9A-Z\-_.]+$/.test(username))) {
message_container.textContent = 'Are you sure that ' + username + ' is your username? Most usernames only contain letters and numbers. If you\'re not sure what your username is, feel free to contact the board.';
username_field.classList.add('is-danger');
return;
} else if (amountUnparsed == '') {
message_container.textContent = 'Please fill in amount.';
amount_field.classList.add('is-danger');
return;
} else {
message_container.textContent = '';
}
let amount = parseFloat(document.getElementById('tabtopup-amount').value.replace(',', '.'));
message_container.textContent = username + ' will top up for ' + amount.toFixed(2) + ' euro. It might take a couple of days before this arrives on your Tab.';
let message = 'TAB ' + username;
if (message.length >= 80) {
message_container.textContent = 'Username too long.';
username_field.classList.add('is-danger');
return;
}
if (amount <= 0) {
message_container.textContent = 'Amount should be at least 0.01 euro (but preferably more of course).';
amount_field.classList.add('is-danger');
return;
}
let qr_data = generateQrCode({
name: 'Zeus WPI',
iban: document.getElementById('banknumber').textContent,
amount: amount,
unstructuredReference: message,
information: 'Zeus WPI Tab',
});
new QRCode(qr_container, {
text: qr_data,
width: 256,
height: 256,
correctLevel: QRCode.CorrectLevel.M
});
return;
}
window.onload = function() {
document.getElementById('tab-qr-button').addEventListener('click', function(event) {
event.preventDefault();
let modal = document.querySelector('.modal');
let html = document.querySelector('html');
modal.classList.add('is-active');
html.classList.add('is-clipped');
modal.querySelector('.modal-background').addEventListener('click', function(e) {
e.preventDefault();
modal.classList.remove('is-active');
html.classList.remove('is-clipped');
});
});
document.getElementById('tabtopup-username').addEventListener('input', regenerateQR);
document.getElementById('tabtopup-amount').addEventListener('input', regenerateQR);
regenerateQR();
}

View file

@ -66,17 +66,13 @@ table.board-table {
}
#contact-icons {
display: flex;
justify-content: center;
align-items: center;
> .column {
max-width: 70vw;
max-width: 40vw;
}
.contact-circle-option {
display: block;
max-width: 200px;
//display: block;
//max-width: 200px;
.contact-circle-wrapper {
display: block;
@ -161,3 +157,65 @@ table.board-table {
border-color: $primary;
}
}
.sponsoring-member {
.name {
padding-top: 0.75rem;
font-size: 1.4rem;
font-weight: bold;
text-align: center;
}
.username {
font-weight: lighter;
font-size: 1.1rem;
}
.logo-wrapper {
display: flex;
flex-direction: column;
align-items: center;
width: 14rem;
padding: 0.75rem 0;
img {
max-width: 9rem;
max-height: 9rem;
}
}
.links {
margin-top: 1.5rem;
.social-icon {
margin-right: 0.6rem;
}
}
blockquote {
font-size: 1.2rem;
}
.description {
font-size: 1.1rem;
font-weight: normal;
}
.logo-initial {
background-color: #ff7f00;
width: 7rem;
height: 7rem;
}
@media screen and (max-width: 550px){
.logo-wrapper {
width: 10rem;
}
.name{
font-size: 1rem;
}
.username{
font-size: 0.9rem;
}
}
}

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;
@ -45,7 +12,6 @@ $sel: '';
.titlewrap {
position: relative;
margin: auto;
min-width: 400px;
.title {
@include tablet {
@ -99,21 +65,11 @@ $sel: '';
}
.blog-preview {
position: relative;
// Fadeout
&::after {
content: '';
position: absolute;
bottom: 20px;
left: 0;
/* Permalink - use to edit and share this gradient: http://colorzilla.com/gradient-editor/#ffffff+0,ffffff+100&0+0,1+100;White+to+Transparent */
background: -moz-linear-gradient(top, rgba(255,255,255,0) 0%, rgba(255,255,255,1) 100%); /* FF3.6-15 */
background: -webkit-linear-gradient(top, rgba(255,255,255,0) 0%,rgba(255,255,255,1) 100%); /* Chrome10-25,Safari5.1-6 */
background: linear-gradient(to bottom, rgba(255,255,255,0) 0%,rgba(255,255,255,1) 100%); /* W3C, IE10+, FF16+, Chrome26+, Opera12+, Safari7+ */
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#00ffffff', endColorstr='#ffffff',GradientType=0 ); /* IE6-9 */
height: 100px;
width: 100%;
.blogpreview-extra {
color: #7a7a7a;
}
.blogpreview-tags {
color: #7a7a7a;
}
}

View file

@ -24,7 +24,7 @@
padding: 20px;
&.light-background {
background-color: rgba(0, 0, 0, 0.5);
background-color: rgba(0, 0, 0, 0.75);
}
}

View file

@ -15,7 +15,6 @@ pre .line-numbers {
transition: all .15s ease;
box-shadow: 0 4px 6px rgba(50,50,93,.11), 0 1px 3px rgba(0,0,0,.08);
}
a.box:hover {
@ -223,3 +222,11 @@ footer.footer {
.has-small-caps {
font-variant: small-caps;
}
.underline--magical {
background-image: -webkit-linear-gradient(to right, $zeus-orange, #FFFFFF); /* Chrome 10-25, Safari 5.1-6 */
background-image: linear-gradient(to right, $zeus-orange, #FFFFFF); /* W3C, IE 10+/ Edge, Firefox 16+, Chrome 26+, Opera 12+, Safari 7+ */
background-repeat: no-repeat;
background-size: 100% 0.15em;
background-position: 0 99%;
}

View file

@ -3,7 +3,7 @@
margin-bottom: 10px;
z-index: 100;
.logo-wrapper {
#logo-link {
padding-bottom: 0;
position: relative;

View file

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

View file

@ -30,6 +30,14 @@ $top_coder_size: 80px;
margin-left: 10px;
margin-right: 10px;
>h2 {
margin-bottom: 0;
}
>hr {
margin: 0.4rem 0;
}
.event-time-loc {
margin-left: 10px;
margin-right: 10px;
@ -55,7 +63,7 @@ $top_coder_size: 80px;
.content {
color: white;
h1, h2 {
h1, h2, h3 {
color: inherit;
}
a, a:visited {
@ -130,7 +138,7 @@ $top_coder_size: 80px;
.content {
position: relative;
h1, h2 {
h1, h2, h3 {
color: white;
}

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

@ -1,15 +1,13 @@
/* KEEP THIS VVVV */
/* HACK The following line of code does nothing. It only serves as a way for nanoc to recognize dependencies with all the sub scss files */
// <% @items.find_all('/assets/stylesheets/includes/*').each {|e| e.raw_content } %>
/* KEEP THIS ^^^^ */
@import "includes/variables";
@import "node_modules/bulma/bulma";
@import "node_modules/bulma-divider/dist/css/bulma-divider";
@import "node_modules/bulma-timeline/dist/css/bulma-timeline";
@import "node_modules/bulma-timeline/src/sass/index.sass";
// TODO: Remove this once FF64.0b2+ fixes this fustercluck
@-moz-document url-prefix() {
.tile {
min-height: auto;
}
}
// Sticky footer
body {
@ -40,3 +38,5 @@ body {
@import "includes/navbar";
@import "includes/search";
@import "includes/about";
@import "includes/privacy";
@import "includes/toc";

View file

@ -0,0 +1,9 @@
---
title: Java-bot project.
created_at: 29-03-2001
---
Alle leden en geinteresseerden mogen meewerken aan het in Java programmeren van een irc-bot. Mail junk@zeus.rug.ac.be".
_Noot van de archivaris: de datum van deze blogpost is een schatting._

View file

@ -0,0 +1,9 @@
---
title: Linuxlessen online.
created_at: 03-12-2000
---
De lessen kunnen nu ook [gedownload](http://web.archive.org/web/20010303211508/http://www.zeus.rug.ac.be/linuxles.shtml#download) worden.
_Noot van de archivaris: de datum van deze blogpost is een schatting._

View file

@ -0,0 +1,8 @@
---
title: Data Linuxlessen gekend!
created_at: 01-12-2000
---
Zeus WPI geeft terug Linuxlessen! Er zijn dit keer 4 lessen voorzien, met onder meer Linux-installatie en configuratie voor de beginnende gebruiker. Voor de gevorderde gebruiker hebben we enkele uiteenzettingen over firewalling, routing, samba, ... Om je in te schrijven volstaat een mailtje naar lessen@zeus.rug.ac.be met een vermelding van je naam, de les en het aantal aanwezige personen! Voor meer informatie ga je naar de [lessenpagina](http://web.archive.org/web/20001208193800/http://www.zeus.rug.ac.be:80/pub.shtml).
_Noot van de archivaris: de datum van deze blogpost is een schatting._

View file

@ -0,0 +1,9 @@
---
title: Nieuwe lessen in het verschiet.
created_at: 01-03-2001
---
Er worden terug lessen gegeven. Deze keer gaan ze over PHP, firewalling, ... Meer info volgt binnenkort.
_Noot van de archivaris: de datum van deze blogpost is een schatting._

View file

@ -0,0 +1,9 @@
---
title: Mirrors bijgewerkt tijdens de vakantie
created_at: 01-10-2000 10:00
---
De mirrors van Zeus WPI (ftp.zeus.rug.ac.be) werden in de vakantie goed onderhouden, en verschillende nieuwe zaken werden toegevoegd of ge-updated. Zo hebben we ondermeer Debian 2.2 staan en Tucows met de nieuwe layout. We proberen altijd de recenste versies van alles te vinden. Indien iets ontbreekt aarzel dan zeker niet om ons te contacteren, zodat we onze diensten altijd kunnen uitbreiden naar de wensen van onze gebruikers.
_Noot van de archivaris: de datum van deze blogpost is een schatting._

View file

@ -0,0 +1,22 @@
---
title: ZEUS WPI geeft PHP lessen.
created_at: 30-03-2001
---
Op 18, 25 april en 2, 9 mei geven we PHP lessen. Een niet te missen kans voor alle webmasters onder jullie. Meer info volgt binnenkort.
De Linux lessen kunnen nu ook [gedownload](http://web.archive.org/web/20010331094024/http://www.zeus.rug.ac.be:80/lessen/linuxles.shtml#download) worden.
_Update 01/05/2001_
Op 18, 25 april en 2, 9 mei geven we PHP lessen. Een niet te missen kans voor alle webmasters onder jullie. De lessenreeks is nu reeds halfweg. De teksten en de voorbeelden zijn beschikbaar via onderstaande link.
[Meer info, de teksten en de voorbeelden...](http://web.archive.org/web/20010429044958/http://www.zeus.rug.ac.be/lessen/phples.shtml)
_Update 19/05/2001_
De lessen van 2000-2001 zijn achter de rug. De lessenreeks over PHP oogste veel bijval. De lessen werden toegelicht met programmavoorbeelden en uitvoerige lesnota's. Je kan de lesnota's en de source-codes van de voorbeelden afhalen van de zeus-site.
[Meer info, de teksten en de voorbeelden...](http://web.archive.org/web/20010519194513/http://www.zeus.rug.ac.be:80/lessen/phples.shtml)
_Noot van de archivaris: de datum van deze blogpost en zijn updates is een schatting._

View file

@ -0,0 +1,10 @@
---
title: "ZEUS WPI's security pagina."
created_at: 31-03-2001
---
Er is gebleken dat er een grote nood is aan enkele webpagina's met uitleg over het hoe en waarom van security (of beveiliging voor de fanatiekelingen onder u). Vooral het hoe bleek een probleem te zijn.
Op de [security pagina](http://web.archive.org/web/20010331094024/http://www.zeus.rug.ac.be/security/) vindt u meer uitleg.
_Noot van de archivaris: de datum van deze blogpost is een schatting._

View file

@ -0,0 +1,8 @@
---
title: Nieuwe site Zeus WPI
created_at: 02-10-2000
---
Vanaf vandaag is de nieuwe site van Zeus WPI online. De layout is grondig veranderd, maar de inhoud is ongeveer gelijk gebleven (alles wat er vroeger was is nu ook nog terug te vinden), en enkele nieuwe zaken werden toegevoegd. Dit is een eerste stap in de richting waarin we dit jaar willen gaan. We kiezen voor vernieuwing, en naar aanleiding van het 10-jarig bestaan van Zeus zullen nog andere dingen volgen. Hou ons in de gaten!
_Noot van de archivaris: de datum van deze blogpost is een schatting._

View file

@ -0,0 +1,9 @@
---
title: De Zeus t-shirts.
created_at: 02-12-2000
---
Ben jij een grafisch genie? Kun je overweg met een tekenpakket? Voel je je geroepen om het Zeus t-shirt te ontwerpen? Aarzel dan niet en ontwerp voor ons een t-shirt met het gekende [Zeus-logo](http://www.zeus.rug.ac.be/logos/logozeus.jpg). Ontwerpen kun je mailen naar ons [keurteam](mailto:tshirts@zeus.rug.ac.be). Na overleg met het bestuur wordt de mooiste/origineelste uit gekozen.
_Noot van de archivaris: de datum van deze blogpost is een schatting._

View file

@ -0,0 +1,10 @@
---
title: Foto's van de verjaardag online!
created_at: 11-05-2001
---
Op 23 april vierde Zeus zijn 10-jarig bestaan met een korte receptie en een lange after-party in de BoomBoom. De foto's zijn te bezichtigen op onze site. Jammer genoeg zijn deze niet beschikbaar van buiten het RUGnet.
[Meer foto's...](http://web.archive.org/web/20031009082128/http://zeus.rug.ac.be/~jonas/)
_Noot van de archivaris: de datum van deze blogpost en zijn updates is een schatting._

View file

@ -0,0 +1,13 @@
---
title: Zeus dankt de lesgevers van de installatieles...
created_at: 28-11-2001
---
Hierbij willen we Bernard Grymonpon, Frank Louwers en Rudy Gevaert danken voor hun inzet voor de [installatieles](http://web.archive.org/web/20020802193359/http://www.zeus.rug.ac.be:80/pub.shtml). Alsook danken we de talrijke aanwezigen.
Als ook willen we onze verontschuldigingen aanbieden aan de aanwezigen, voor de ietwat hectische les. Dit kwam omdat Bernard de dag zelf past wist dat hij de les ging geven. Tom die de les normaal ging geven was geveld door de griep.
Na de les hebben we de X-server ook aan de praat gekregen (wat tijdens de les niet lukte), we gebruikten een verkeerde driver. Maw inspecteer uw hardware voor je begint te installeren.
_Noot van de archivaris: de datum van deze blogpost is een schatting._

View file

@ -0,0 +1,9 @@
---
title: Blok
created_at: 26-05-2002
---
De examens staan voor de deur, dus dit academiejaar houden we het, wat de lessen betreft, voor bekeken.
_Noot van de archivaris: de datum van deze blogpost is een schatting._

View file

@ -0,0 +1,14 @@
---
title: Latex les !
created_at: 01-03-2002
---
LaTeX is een taal waarmee men gemakkelijk documenten van hoge kwaliteit kan produceren. De kwaliteit slaat vooral op: het invoegen van wiskundige tekst op eenvoudige manier in een document, het maken van thesissen, het opstellen van brieven.
Kortom LaTeX is het vervangmiddel voor tekstverwerkingprogramma's als Word die doen wat je niet wilt, LaTex doet wat jij wilt.
De lessen gaan door op donderdag 07/03 en dinsdag 12/03, telkens op 18h30 in auditorium A0 in gebouw S9 van de campus Sterre.
Een gratis cursus tijdens de les ? Stuur een mailtje naar lessen@zeus.rug.ac.be.
_Noot van de archivaris: de aanmaakdatum van dit evenement is een schatting._

View file

@ -0,0 +1,9 @@
---
title: ZEUS WPI zoekt nieuwe leden
created_at: 01-10-2001
---
Ben je een nieuwe student, heb je interesse in de informatica? Word dan [lid](http://web.archive.org/web/20011127170659/http://www.zeus.rug.ac.be:80/newlid.shtml) van Zeus.
_Noot van de archivaris: de datum van deze blogpost is een schatting._

View file

@ -0,0 +1,9 @@
---
title: Zeus geeft linuxles.
created_at: 27-11-2001
---
Op dinsdag 20/11 en 27/11 geven we terug Linuxles. Meer info op de [lessen](http://web.archive.org/web/20020802193359/http://www.zeus.rug.ac.be:80/pub.shtml)pagina.
_Noot van de archivaris: de datum van deze blogpost is een schatting._

View file

@ -0,0 +1,9 @@
---
title: ZEUS WPI geeft PHP lessen
created_at: 13-03-2001
---
Op 15,18,22 en 25 april geeft ZeusWPI een lessenreeks over PHP.
_Noot van de archivaris: de datum van deze blogpost en zijn updates is een schatting._

View file

@ -0,0 +1,8 @@
---
title: Onze lang verwachte C-lessen
created_at: 10-02-2003
---
Vanaf woensdag 19/2 begint Geert Vernaeve aan zijn legendarische C-cursus. 4 inleidingslessen leiden je in in de wondere wereld van programmeren in C. Heb je altijd al willen helpen aan een van die Open Source (sorry.. Vrije) projecten, of wil je verder kijken dan je java-neus lang is, schrijf je dan in op lessen at zeus.ugent.be . Als je een gedrukte cursus wenst (meer info [hier](http://web.archive.org/web/20030321012833/http://www.zeus.rug.ac.be:80/c.shtml)), vergeet dat ook niet te vermelden in je mailtje.
_Noot van de archivaris: de datum van deze blogpost is een schatting._

View file

@ -0,0 +1,24 @@
---
title: Externe bereikbaarheid
created_at: 08-07-2003
author: Olivier Verhoogen
---
Hallo!
Zoals sommigen onder jullie wel al gehoord, gemerkt en/of op
bovennatuurlijke wijze aangevoeld hebben is Zeus vanaf heden ook van
buiten (R)UGnet bereikbaar. We gaan bovendien tijdens de zomermaanden
(hoezo 2e zit?) serieus aan onze setup sleutelen zodat we het komende
academiejaar kunnen starten zoals het een werkgroep informatica betaamt.
Het is uit veiligheidsoverwegingen voorlopig wel niet mogelijk nieuwe
connecties van op een zeus-machine naar buiten te starten.
Het zal nog even wachten zijn op koele dingen als CVS respositories, MySQL
databases en dergelijke meer. Het is ondertussen wel weer mogelijk om op
de conventionele manier PHP te gebruiken.
Enjoy!
Het admin team,
Het bestuur.

View file

@ -0,0 +1,9 @@
---
title: FreeBSD cvsup mirror
created_at: 02-02-2003
author: Kenneth
---
Op hermes.rug.ac.be is nu tevens een cvsup mirror te vinden van FreeBSD. Mensen die FreeBSD gebruiken kunnen hun sources dus syncen via hermes.rug.ac.be; via ftp zijn tevens de packages te vinden. Je kunt die dus beter via hermes downloaden ipv de mastersites nog extra te belasten.
_Noot van de archivaris: de datum van deze blogpost is een schatting._

View file

@ -0,0 +1,8 @@
---
title: Nieuw hardwareproject
created_at: 23-11-2002
---
Een netwerkje van oude computers ineenknutselen.
_Noot van de archivaris: de datum van deze blogpost is een schatting._

View file

@ -0,0 +1,9 @@
---
title: Kernel-les
created_at: 15-03-2003
---
Download [hier](http://web.archive.org/web/20030528113017/http://www.zeus.rug.ac.be:80/kernel_introductie.pdf) de les over de linux-kernel, gegeven door Bart De Schuymer.
Meer info op zijn [project-page](http://web.archive.org/web/20030801141805/http://zeus.rug.ac.be/~bdschuym/) (RUGnet intern).
_Noot van de archivaris: de datum van deze blogpost is een schatting._

View file

@ -0,0 +1,8 @@
---
title: Listserver
created_at: 22-11-2002
---
Ja die werkt terug!
_Noot van de archivaris: de datum van deze blogpost is een schatting._

View file

@ -0,0 +1,9 @@
---
title: Interessante mailinglists
created_at: 20-03-2003
---
Onlangs werden bij Zeus twee nieuwe mailinglists opgericht, nl. help@zeus.rug.ac.be en announce@zeus.rug.ac.be. Hoe u kan inschrijven leest u [hier](http://web.archive.org/web/20030502094002/http://www.zeus.rug.ac.be/mailinglists.shtml).
_Noot van de archivaris: de datum van deze blogpost is een schatting._

View file

@ -0,0 +1,8 @@
---
title: Zeus Mirror
created_at: 21-11-2002
---
Onze mirror is nu ook bereikbaar via rsync.
_Noot van de archivaris: de datum van deze blogpost is een schatting._

View file

@ -0,0 +1,8 @@
---
title: O'reilly reviews
created_at: 24-11-2002
---
O'reilly heeft ons een tijdje terug 4 boeken opgestuurd om te [reviewen](http://web.archive.org/web/20021124131950/http://www.zeus.rug.ac.be:80/reviews/). Dit is nu gebeurd. Bedankt aan O'reilly en de reviewers.
_Noot van de archivaris: de datum van deze blogpost is een schatting._

View file

@ -0,0 +1,8 @@
---
title: Zeus Projecten Pagina
created_at: 20-11-2002
---
De zeus projecten pagina is geactualiseerd naar 2002-2003, zie [Projecten](http://web.archive.org/web/20021207222624/http://www.zeus.rug.ac.be/projects.shtml).
_Noot van de archivaris: de datum van deze blogpost is een schatting._

View file

@ -0,0 +1,8 @@
---
title: Overleven op RUGnet
created_at: 30-09-2002
---
"Overleven op RUGnet" is nu ook [on-line](http://web.archive.org/web/20021004042945/http://www.zeus.rug.ac.be/overleven/) te raadplegen!
_Noot van de archivaris: de datum van deze blogpost is een schatting._

View file

@ -0,0 +1,10 @@
---
title: Zeus en voyeurisme
created_at: 17-03-2003
---
Is er momenteel iemand in de Zeuskelder? Ga ik er niet voor een gesloten deur staan? Zit je ook soms met die prangende vragen, vooraleer je naar de kelder komt, dan bestaat daar nu een handige oplossing voor. Er hangt nl. een webcam in de kelder, die om de paar seconden een beeldje doorstuurt, waarop je kan ziet wat er bij Zeus momenteel aan de hand is. De beelden kan je bekijken op [NaN's homepagina](http://www.zeus.rug.ac.be/~kris/zeus.jpg) (RUGnet intern).
En aan iedereen die van plan is de Zeuskelder leeg te komen halen: We're watching you!
_Noot van de archivaris: de datum van deze blogpost is een schatting._

View file

@ -0,0 +1,8 @@
---
title: Generieke gelukwensen
created_at: 24-12-2003
author: Olivier Verhoogen
---
Ik zou namens het bestuur en de admin alle leden (en de toevallige meekijkers ook wel) een vrolijk kerstfeest en een gelukkig nieuwjaar willen toewensen. Of vertaald naar de minder gelukkigen onder ons: een voorspoedige blok en een geslaagde eerste examenperiode!

View file

@ -0,0 +1,9 @@
---
title: LaTeX-lessen
created_at: 15-10-2003
author: Kenneth
---
Op maandag 27 oktober en maandag 3 november om 18u, geeft Gaspard 2 lessen over LaTeX. Dus als je meer wil weten over deze professionele typesetting-language, kom dan zeker af naar auditorium A0, S9, Campus De Sterre. Stuur vooraf wel even een mailtje naar lessen@zeus.UGent.be, met de vermelding of je een gedrukte cursus wil. Tot dan.
Update: De nieuwe cursus staat nu ook online. Je kan hem vinden onder publicaties.

View file

@ -0,0 +1,9 @@
---
title: PHP lessen
created_at: 01-04-2004
author: Rudy Gevaert
---
Zeus geeft nog es les.
De vier eerste maandagen na de paasvakantie, dat zijn 19 en 26 april en 3 en 10 mei, geeft Simkin 4 PHP-lessen, telkens om 18.00u. Wil je komen stuur dan een mailtje naar lessen @ zeus . ugent . be.

View file

@ -0,0 +1,9 @@
---
title: Les, les en nog eens les
created_at: 07-03-2004
author: Kenneth
---
Op 18 maart om 19.00 geeft Mattias Campe een introductie tot het IM-protocol **Jabber**.
In samenwerking met de Werkgroep Vrije Software van het VTK gaat er nog een les door over **Mandrake** op 22 maart, een **GNU/Linux**-introductieles op 25 maart, en een **LaTeX**-les op 22 april.
De vier eerste maandagen na de paasvakantie tenslotte, dat zijn 19 en 26 april en 3 en 10 mei, geeft Simkin 4 **PHP**-lessen, telkens om 18.00u.

View file

@ -0,0 +1,11 @@
---
title: Gent OntgroenD
created_at: 08-10-2003
author: Olivier Verhoogen
---
Op dit eigenste moment gaat er in zaal Kunstzicht in resto Overpoort een mega verenigingenshowofftoestand door. Natuurlijk is ook Zeus WPI vertegenwoordigd! Voor die arme mensen die hier al de fun moeten missen hebben we rap een webcampaginaatje in elkaar gefoefeld.
In zoverre Lieven zijn macje het niet nog eens begeeft kan je live meevolgen op ons [kassa IP](http://overes15.ugent.be/). NaN heeft ook een paar snapshots genomen met de digicam van zijn nonkel. Die zijn te bezichtigen op zijn (nieuwe) [site](http://web.archive.org/web/20031128075228/http://www.zeus.ugent.be/~kris/gallery/view_album.php?set_albumName=gentontgroend&page=1).
UPDATE (1650CEST): Het vat is af... dus we zijn voort.

View file

@ -0,0 +1,25 @@
---
title: Zeus T-shirts!
created_at: 01-09-2003
author: Olivier Verhoogen
---
Weledelgeboren leden van de Werkgroep Publieke Informatica,
Na veel (en af en toe ook wel wat minder) geduld staat het er eindelijk
toch van te komen: er worden opnieuw Zeus T-Shirts gedrukt!
Origineel als we zijn kiezen we voor een zwart shirt met langs voor een
klein Zeus logo en langs achter de reeds welbekende adminspotting tekst
(zo niet: zie www.adminspotting.org). De om en bij volledige gelijkenis
met de vorige editie shirts berust hierbij uiteraard geheel op toeval.
Zie je het wel zitten om je kleerkast aan te vullen met een (of meerdere)
shirts van je favoriete werkgroep? Schrijf dan snel per gewenst exemplaar
8 euro over op rekeningnummer 979-9937065-02. Vermeld in de mededeling
duidelijk je loginnaam, het gewenste aantal shirts alsook de gewenste
maten (M, L of XL).
Ik plaats de bestelling in de week van 22 september dus zie dat je
overschrijving uiterlijk tegen dan is voltrokken. Met een beetje geluk
krijg je dan je eigenste exempla(a)r(en) al op de eerste ledenvergadering.

View file

@ -0,0 +1,10 @@
---
title: Updates
created_at: 16-02-2004
author: Kenneth
---
Een nieuw semester, nieuwe gewoontes. De nieuwe openingstijden van de kelder vind je onder Kelderpermanenties.
Ook zijn er nieuwe versies beschikbaar van onze XHTML/CSS en LaTeX-lessen. Nog steeds te vinden onder Publicaties.

View file

@ -0,0 +1,8 @@
---
title: Webcam online
created_at: 30-10-2003
author: Kenneth
---
De webcam is terug online! Ons nerdzijn is hier te bewonderen. Het is de bedoeling de boel volledig streaming te maken als project.

Some files were not shown because too many files have changed in this diff Show more