Initial implementation

This commit is contained in:
Timothée Floure 2021-02-03 17:34:11 +01:00
commit 02358bdce6
Signed by: tfloure
GPG key ID: 4502C902C00A1E12
12 changed files with 391 additions and 0 deletions

2
.gitignore vendored Normal file
View file

@ -0,0 +1,2 @@
*.html
data/activities.xml

27
Makefile Normal file
View file

@ -0,0 +1,27 @@
# Stuff for make to work make magic.
.DEFAULT: all
.SUFFIXES: .html
.PHONY: all
.EXPORT_ALL_VARIABLES:
BASE_TITLE = Global Initiative
XML_FILE = data/$(shell ls -I activities.xml data/ | sort -r | head -n 1)
XML_ARTEFACT = data/activities.xml
PAGES = index.html
BLOBS = assets/ data/
all: $(PAGES) $(BLOBS)
clean:
rm -rf $(PAGES) $(XML_ARTEFACT)
deploy: $(PAGES) $(BLOBS)
./deploy.sh $^
$(XML_ARTEFACT):
cat "$(XML_FILE)" > $(XML_ARTEFACT)
index.html: $(XML_ARTEFACT)
TITLE="Global Initiative | XML Sharing" ./index.html.sh > $@
$(PAGES): index.html.sh assets

13
README.md Normal file
View file

@ -0,0 +1,13 @@
# Global Initiative XML Sharing
Minimal website used to share XML files from [Global
Initiative](https://globalinitiative.net/).
This website is based on [Nyll](https://git.sr.ht/~sparrowhawk/nyll) and
depends on:
* `sh`
* `make`
* `[coreutils](coreutils)` (`basename`, `md5sum` and `date`)
You can generate the output with `make` and deploy with `make deploy`.

7
assets/bootstrap-grid.min.css vendored Normal file

File diff suppressed because one or more lines are too long

8
assets/bootstrap-reboot.min.css vendored Normal file
View file

@ -0,0 +1,8 @@
/*!
* Bootstrap Reboot v4.5.3 (https://getbootstrap.com/)
* Copyright 2011-2020 The Bootstrap Authors
* Copyright 2011-2020 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
* Forked from Normalize.css, licensed MIT (https://github.com/necolas/normalize.css/blob/master/LICENSE.md)
*/*,::after,::before{box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}article,aside,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:left;background-color:#fff}[tabindex="-1"]:focus:not(:focus-visible){outline:0!important}hr{box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem}p{margin-top:0;margin-bottom:1rem}abbr[data-original-title],abbr[title]{text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;border-bottom:0;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#007bff;text-decoration:none;background-color:transparent}a:hover{color:#0056b3;text-decoration:underline}a:not([href]):not([class]){color:inherit;text-decoration:none}a:not([href]):not([class]):hover{color:inherit;text-decoration:none}code,kbd,pre,samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:1em}pre{margin-top:0;margin-bottom:1rem;overflow:auto;-ms-overflow-style:scrollbar}figure{margin:0 0 1rem}img{vertical-align:middle;border-style:none}svg{overflow:hidden;vertical-align:middle}table{border-collapse:collapse}caption{padding-top:.75rem;padding-bottom:.75rem;color:#6c757d;text-align:left;caption-side:bottom}th{text-align:inherit;text-align:-webkit-match-parent}label{display:inline-block;margin-bottom:.5rem}button{border-radius:0}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,input{overflow:visible}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled),button:not(:disabled){cursor:pointer}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{padding:0;border-style:none}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;max-width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit;color:inherit;white-space:normal}progress{vertical-align:baseline}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:none}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item;cursor:pointer}template{display:none}[hidden]{display:none!important}
/*# sourceMappingURL=bootstrap-reboot.min.css.map */

Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB

98
assets/main.css Normal file
View file

@ -0,0 +1,98 @@
/* Generic */
body, footer {
width: 720px;
margin: auto;
}
a {
color: black;
text-decoration: underline;
}
a:hover {
color: black;
text-decoration: none;
}
.btn:link, .btn:visited, .btn {
background-color: #081b3b;
color: #fff;
padding: 10px 15px;
text-align: center;
text-decoration: none;
display: inline-block;
border-radius: 5px;
}
.btn:hover, .btn:active {
opacity: 0.75;
}
.btn-bold {
font-weight: bold;
}
.align-vertically {
display: flex;
align-items: center;
}
/* Header */
header {
margin-top: 30px;
}
#header-logo {
max-width: 300px;
}
/* Content */
main {
margin-top: 50px;
margin-bottom: 50px;
}
.file-box {
border: 1px solid lightgrey;
border-radius: 5px;
}
.file-box img {
height: 80px;
}
.file-box h1 {
margin-bottom: 0;
}
.file-box .dim{
color: grey;
}
.file-box .logo-container {
display: flex;
justify-content: flex-start;
}
.file-box .download-container {
justify-content: flex-end;
}
/* Footer */
footer {
position: absolute;
bottom: 50px;
}
#footer-logo {
height: 100px;
}
#legal {
opacity: 0.75;
text-align: right;
margin-top: 20px;
}

1
assets/xml-logo.svg Normal file
View file

@ -0,0 +1 @@
<?xml version="1.0" encoding="iso-8859-1"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 56 56" style="enable-background:new 0 0 56 56" xml:space="preserve"><g><path style="fill:#e9e9e0" d="M36.985,0H7.963C7.155,0,6.5,0.655,6.5,1.926V55c0,0.345,0.655,1,1.463,1h40.074 c0.808,0,1.463-0.655,1.463-1V12.978c0-0.696-0.093-0.92-0.257-1.085L37.607,0.257C37.442,0.093,37.218,0,36.985,0z"/><polygon style="fill:#d9d7ca" points="37.5,0.151 37.5,12 49.349,12"/><path style="fill:#f29c1f" d="M48.037,56H7.963C7.155,56,6.5,55.345,6.5,54.537V39h43v15.537C49.5,55.345,48.845,56,48.037,56z"/><g><path style="fill:#fff" d="M19.379,48.105L21.936,53h-1.9l-1.6-3.801h-0.137L16.576,53h-1.9l2.557-4.895l-2.721-5.182h1.873 l1.777,4.102h0.137l1.928-4.102H22.1L19.379,48.105z"/><path style="fill:#fff" d="M31.998,42.924h1.668V53h-1.668v-6.932l-2.256,5.605h-1.449l-2.27-5.605V53h-1.668V42.924h1.668 l2.994,6.891L31.998,42.924z"/><path style="fill:#fff" d="M37.863,42.924v8.832h4.635V53h-6.303V42.924H37.863z"/></g><path style="fill:#f29c1f" d="M15.5,24c-0.256,0-0.512-0.098-0.707-0.293c-0.391-0.391-0.391-1.023,0-1.414l6-6 c0.391-0.391,1.023-0.391,1.414,0s0.391,1.023,0,1.414l-6,6C16.012,23.902,15.756,24,15.5,24z"/><path style="fill:#f29c1f" d="M21.5,30c-0.256,0-0.512-0.098-0.707-0.293l-6-6c-0.391-0.391-0.391-1.023,0-1.414 s1.023-0.391,1.414,0l6,6c0.391,0.391,0.391,1.023,0,1.414C22.012,29.902,21.756,30,21.5,30z"/><path style="fill:#f29c1f" d="M33.5,30c-0.256,0-0.512-0.098-0.707-0.293c-0.391-0.391-0.391-1.023,0-1.414l6-6 c0.391-0.391,1.023-0.391,1.414,0s0.391,1.023,0,1.414l-6,6C34.012,29.902,33.756,30,33.5,30z"/><path style="fill:#f29c1f" d="M39.5,24c-0.256,0-0.512-0.098-0.707-0.293l-6-6c-0.391-0.391-0.391-1.023,0-1.414 s1.023-0.391,1.414,0l6,6c0.391,0.391,0.391,1.023,0,1.414C40.012,23.902,39.756,24,39.5,24z"/><path style="fill:#f29c1f" d="M24.5,32c-0.11,0-0.223-0.019-0.333-0.058c-0.521-0.184-0.794-0.755-0.61-1.276l6-17 c0.185-0.521,0.753-0.795,1.276-0.61c0.521,0.184,0.794,0.755,0.61,1.276l-6,17C25.298,31.744,24.912,32,24.5,32z"/></g></svg>

After

Width:  |  Height:  |  Size: 2.2 KiB

0
data/.keep Normal file
View file

View file

@ -0,0 +1,170 @@
<?xml version='1.0' encoding='utf-8'?>
<iati-activities generated-datetime="2020-12-18T05:40:49.152000+00:00" version="2.03">
<!--Data generated by IATI CoVE. Built by Open Data Services Co-operative: http://iati.cove.opendataservices.coop/-->
<iati-activity xmlns:globalinitiative="https://globalinitiative.net/" default-currency="GBP" last-updated-datetime="2020-12-18T05:40:49.152000+00:00">
<iati-identifier>CH-FDJP-CHE296622304-DFID-SEAOBS</iati-identifier>
<reporting-org ref="CH-FDJP-CHE296622304" type="21">
<narrative>The Global Initiative against Transnational Organized Crime</narrative>
</reporting-org>
<title>
<narrative>A Civil Society Organised Crime Observatory For East And Southern Africa</narrative>
</title>
<description type="1">
<narrative>The creation of a Civil Society Observatory for Southern and Eastern Africa was intended as a contribution to building an evidence base and capacity to counter illicit financial flows. This is vital in a region where institutional levels of corruption and governance failures have held back development, economic growth and severely impacted the lives of ordinary citizens. Growing levels of violence domestically and across borders have also exacerbated levels of insecurity.</narrative>
</description>
<description type="2">
<narrative>The objective of this project is to bolster the fight against organised crime and illicit financial flows by building a set of interlocking regional observatories that will improve analysis and reporting of organised crime and will mobilize, encourage and support state and civil society responses. In particular, the project will pilot innovative data collection methodologies for illicit markets, and place in the public domain data and political economy analyses that focus on the profits accrued from key regional markets, how these are earned, where they are channelled to, the actors involved and the socio-economic impact that they have.</narrative>
</description>
<description type="4">
<narrative>The project is designed to have four interlocking pillars of activity, with two centres of operation, Nairobi for East Africa and Cape Town for Southern Africa. The four pillars are:
1. Data Innovation: Experimenting with new ways to capture the scope, scale and impact of the illicit economy.
2. Political Economy Analysis: Delivering in-depth research studies and shorter bulletins that highlight the political economy dimensions of illicit markets.
3. Convening and Network Building: Creating and strengthening platforms for engagement between civil society and state institutions to further responses to organised crime.
4. Public Outreach: Effectively disseminating information and analysis into the public domain.</narrative>
</description>
<participating-org activity-id="GB-1-204227-109" ref="GB-GOV-1" role="1" type="10">
<narrative>Foreign, Commonwealth &amp; Development Office</narrative>
</participating-org>
<participating-org activity-id="CH-FDJP-CHE296622304-DFID-SEAOBS" ref="CH-FDJP-CHE296622304" role="4" type="21">
<narrative>Global Initiative against Transnational Organized Crime</narrative>
</participating-org>
<activity-status code="2"/>
<activity-date iso-date="2019-08-19" type="1"/>
<activity-date iso-date="2019-08-19" type="2"/>
<activity-date iso-date="2021-03-31" type="3"/>
<contact-info type="1">
<organisation>
<narrative>The Global Initiative against Transnational Organized Crime</narrative>
</organisation>
<email>secretariat@globalinitiative.net</email>
<website>https://globalinitiative.net/</website>
</contact-info>
<activity-scope code="3"/>
<recipient-country code="ZW" percentage="5.263157895"/>
<recipient-country code="LS" percentage="5.263157895"/>
<recipient-country code="SZ" percentage="5.263157895"/>
<recipient-country code="BW" percentage="5.263157895"/>
<recipient-country code="MG" percentage="5.263157895"/>
<recipient-country code="SC" percentage="5.263157895"/>
<recipient-country code="KM" percentage="5.263157895"/>
<recipient-country code="MW" percentage="5.263157895"/>
<recipient-country code="YT" percentage="5.263157895"/>
<recipient-country code="KE" percentage="5.263157895"/>
<recipient-country code="ZA" percentage="5.263157895"/>
<recipient-country code="TZ" percentage="5.263157895"/>
<recipient-country code="NA" percentage="5.263157895"/>
<recipient-country code="MZ" percentage="5.263157895"/>
<recipient-country code="SO" percentage="5.263157895"/>
<recipient-country code="SS" percentage="5.263157895"/>
<recipient-country code="SD" percentage="5.263157895"/>
<recipient-country code="UG" percentage="5.263157895"/>
<recipient-region code="89" percentage="5.263157895"/>
<sector code="15113" percentage="100" vocabulary="1"/>
<tag code="16.4" vocabulary="3"/>
<policy-marker code="3" significance="2"/>
<default-flow-type code="10"/>
<default-finance-type code="110"/>
<default-aid-type code="C01"/>
<default-tied-status code="5"/>
<budget status="2" type="2">
<period-start iso-date="2019-08-19"/>
<period-end iso-date="2020-03-31"/>
<value currency="GBP" value-date="2019-08-14">2437529</value>
</budget>
<budget status="2" type="2">
<period-start iso-date="2020-04-01"/>
<period-end iso-date="2021-03-31"/>
<value currency="GBP" value-date="2019-08-14">1262203</value>
</budget>
<transaction>
<transaction-type code="11"/>
<transaction-date iso-date="2019-08-14"/>
<value currency="GBP" value-date="2019-08-14">3919732</value>
<description>
<narrative>Incoming Commitment from Foreign, Commonwealth &amp; Development Office</narrative>
</description>
<provider-org provider-activity-id="GB-1-204227-109" ref="GB-GOV-1" type="10">
<narrative>Foreign, Commonwealth &amp; Development Office</narrative>
</provider-org>
<receiver-org ref="CH-FDJP-CHE296622304" type="21">
<narrative>Global Initiative against Transnational Organized Crime</narrative>
</receiver-org>
</transaction>
<transaction>
<transaction-type code="1"/>
<transaction-date iso-date="2019-08-22"/>
<value currency="GBP" value-date="2019-08-22">1200000</value>
<description>
<narrative>Incoming Fund from Foreign, Commonwealth &amp; Development Office</narrative>
</description>
<provider-org provider-activity-id="GB-1-204227-109" ref="GB-GOV-1" type="10">
<narrative>Foreign, Commonwealth &amp; Development Office</narrative>
</provider-org>
<receiver-org ref="CH-FDJP-CHE296622304" type="21">
<narrative>Global Initiative against Transnational Organized Crime</narrative>
</receiver-org>
</transaction>
<transaction>
<transaction-type code="1"/>
<transaction-date iso-date="2020-04-30"/>
<value currency="GBP" value-date="2020-04-30">1216561</value>
<description>
<narrative>Incoming Fund from Foreign, Commonwealth &amp; Development Office</narrative>
</description>
<provider-org provider-activity-id="GB-1-204227-109" ref="GB-GOV-1" type="10">
<narrative>Foreign, Commonwealth &amp; Development Office</narrative>
</provider-org>
<receiver-org ref="CH-FDJP-CHE296622304" type="21">
<narrative>Global Initiative against Transnational Organized Crime</narrative>
</receiver-org>
</transaction>
<transaction>
<transaction-type code="2"/>
<transaction-date iso-date="2019-08-14"/>
<value currency="GBP" value-date="2019-08-14">3919732</value>
<description>
<narrative>Total grant commitment</narrative>
</description>
<provider-org ref="CH-FDJP-CHE296622304" type="21">
<narrative>Global Initiative against Transnational Organized Crime</narrative>
</provider-org>
<receiver-org ref="CH-FDJP-CHE296622304" type="21">
<narrative>Global Initiative against Transnational Organized Crime</narrative>
</receiver-org>
</transaction>
<transaction>
<transaction-type code="4"/>
<transaction-date iso-date="2019-09-30"/>
<value currency="GBP" value-date="2019-09-30">65348</value>
<description>
<narrative>Total expenditure (Aug - Sep 2019)</narrative>
</description>
<provider-org ref="CH-FDJP-CHE296622304" type="21">
<narrative>Global Initiative against Transnational Organized Crime</narrative>
</provider-org>
</transaction>
<transaction>
<transaction-type code="4"/>
<transaction-date iso-date="2019-12-31"/>
<value currency="GBP" value-date="2019-12-31">253365</value>
<description>
<narrative>Total expenditure (Oct - Dec 2019)</narrative>
</description>
<provider-org ref="CH-FDJP-CHE296622304" type="21">
<narrative>Global Initiative against Transnational Organized Crime</narrative>
</provider-org>
</transaction>
<transaction>
<transaction-type code="4"/>
<transaction-date iso-date="2020-03-31"/>
<value currency="GBP" value-date="2020-03-31">867845</value>
<description>
<narrative>Total expenditure (Jan - Mar 2020)</narrative>
</description>
<provider-org ref="CH-FDJP-CHE296622304" type="21">
<narrative>Global Initiative against Transnational Organized Crime</narrative>
</provider-org>
</transaction>
</iati-activity>
</iati-activities>

9
deploy.sh Executable file
View file

@ -0,0 +1,9 @@
#!/bin/sh
DESTINATION=root@xml.globalinitiative.net:/var/www/
WEBSITE=xml.globalinitiative.net
sftp -b - "$DESTINATION" <<- EOF
-rm $WEBSITE/*
$(for f in "$@"; do echo "put -R $f $WEBSITE/"; done)
EOF

56
index.html.sh Executable file
View file

@ -0,0 +1,56 @@
#!/bin/sh
cat << EOF
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>${TITLE:?}</title>
<link rel="stylesheet" href="assets/bootstrap-reboot.min.css">
<link rel="stylesheet" href="assets/bootstrap-grid.min.css">
<link rel="stylesheet" href="assets/main.css">
</head>
<body>
<header>
<img src="assets/global-initiative-logo.png" id="header-logo" />
</header>
<main>
<div class="file-box">
<div class="container">
<div class="row">
<div class="col-2 align-vertically logo-container">
<img src="assets/xml-logo.svg" />
</div>
<div class="col-8">
<h1>$(basename "${XML_ARTEFACT:?}")</h1>
<p class="dim">
filename: $(basename "${XML_FILE:?}") <br />
md5sum: $(md5sum "${XML_FILE:?}" | cut -d ' ' -f 1)
</p>
</div>
<div class="col-2 align-vertically download-container">
<a class="btn btn-bold btn-download" href="${XML_ARTEFACT:?}">Download</a>
</div>
</div>
</div>
</div>
</main>
<footer>
<div class="container">
<div class="row">
<div class="col">
<img src="assets/global-initiative-logo.png" id="footer-logo" />
</div>
<div class="col" id="legal">
<p>
© <a href="https://globalinitiative.net">Global Initiative</a> 2021, All Rights Reserved.
<br />
Generated on $(date -I).
</p>
</div>
</div>
</div>
</footer>
</body>
</html>
EOF