Author | zPlus <zplus@peers.community> 2023-07-27 02:07:15 |
Committer | zPlus <zplus@peers.community> 2023-07-27 02:07:15 |
Commit | 5b6e0ba (patch) |
Tree | 930dbc9 |
Parent(s) |
index 056a737..dad8177 | |||
old size: 12K - new size: 8K | |||
@@ -5,6 +5,7 @@ import datetime | |||
5 | 5 | import dateutil | |
6 | 6 | import functools | |
7 | 7 | import jinja2 | |
8 | + | import pathlib | |
8 | 9 | import pyld | |
9 | 10 | import re | |
10 | 11 | import requests | |
@@ -16,7 +17,7 @@ from string import Template | |||
16 | 17 | application = bottle.app() | |
17 | 18 | ||
18 | 19 | # Directories to search for HTML templates | |
19 | - | bottle.TEMPLATE_PATH = [ './templates' ] | |
20 | + | bottle.TEMPLATE_PATH = [ './pages' ] | |
20 | 21 | ||
21 | 22 | def query(query_string, jsonld_frame=None): | |
22 | 23 | """ | |
@@ -25,7 +26,7 @@ def query(query_string, jsonld_frame=None): | |||
25 | 26 | """ | |
26 | 27 | ||
27 | 28 | http_request = requests.post( | |
28 | - | 'http://localhost:7000/dokk', | |
29 | + | 'http://dokk:7000/dokk', | |
29 | 30 | data = { 'format': 'json', 'query': query_string}) | |
30 | 31 | ||
31 | 32 | results = http_request.json() | |
@@ -54,6 +55,7 @@ template = functools.partial(template, template_settings = { | |||
54 | 55 | }, | |
55 | 56 | 'globals': { | |
56 | 57 | 'now': lambda: datetime.datetime.now(datetime.timezone.utc), | |
58 | + | 'query': query, | |
57 | 59 | 'request': request, | |
58 | 60 | 'url': application.get_url, | |
59 | 61 | }, | |
@@ -70,158 +72,40 @@ def error404(error): | |||
70 | 72 | ||
71 | 73 | return '[404] {}'.format(error.body) | |
72 | 74 | ||
73 | - | @bottle.get('/static/<filename:path>', name='static') | |
74 | - | def static(filename): | |
75 | - | """ | |
76 | - | Path for serving static files. | |
77 | - | """ | |
78 | - | ||
79 | - | return bottle.static_file(filename, root='./static/') | |
80 | - | ||
81 | - | @bottle.get('/', name='homepage') | |
82 | - | def homepage(): | |
75 | + | @bottle.get('/favicon.ico') | |
76 | + | def favicon(): | |
83 | 77 | """ | |
84 | 78 | """ | |
85 | 79 | ||
86 | - | return template('index.html') | |
80 | + | return bottle.static_file('favicon.ico', root='./') | |
87 | 81 | ||
88 | - | @bottle.get('/library', name='library') | |
89 | - | def library(): | |
82 | + | @bottle.get('/static/<filename:path>', name='static') | |
83 | + | def static(filename): | |
90 | 84 | """ | |
85 | + | Path for serving static files. | |
91 | 86 | """ | |
92 | 87 | ||
93 | - | data = query( | |
94 | - | ''' | |
95 | - | PREFIX library: <dokk:library:> | |
96 | - | PREFIX license: <dokk:license:> | |
97 | - | ||
98 | - | CONSTRUCT { | |
99 | - | ?item library:title ?title; | |
100 | - | library:author ?author ; | |
101 | - | library:license ?license . | |
102 | - | ?license license:id ?license_id ; | |
103 | - | license:name ?license_name . | |
104 | - | } | |
105 | - | WHERE { | |
106 | - | ?item library:title ?title ; | |
107 | - | library:author ?author ; | |
108 | - | library:license ?license . | |
109 | - | ||
110 | - | OPTIONAL { | |
111 | - | ?license license:id ?license_id_optional ; | |
112 | - | license:name ?license_name_optional . | |
113 | - | } | |
114 | - | ||
115 | - | BIND(COALESCE(?license_id_optional, SUBSTR(STR(?license), 14)) AS ?license_id) | |
116 | - | BIND(COALESCE(?license_name_optional, SUBSTR(STR(?license), 14)) AS ?license_name) | |
117 | - | } | |
118 | - | ORDER BY UCASE(?title) | |
119 | - | ''', | |
120 | - | { | |
121 | - | '@context': { | |
122 | - | 'library': 'dokk:library:', | |
123 | - | 'license': 'dokk:license:', | |
124 | - | 'library:author': { '@container': '@set' }, | |
125 | - | 'library:license': { '@container': '@set' } | |
126 | - | }, | |
127 | - | 'library:title': {} | |
128 | - | }) | |
129 | - | ||
130 | - | return template('library.html', data=data) | |
88 | + | return bottle.static_file(filename, root='./static/') | |
131 | 89 | ||
132 | 90 | @bottle.get('/library/<item_id>', name='library_item') | |
133 | 91 | def library_item(item_id): | |
134 | 92 | """ | |
135 | 93 | """ | |
136 | 94 | ||
137 | - | item_iri = '<dokk:library:' + item_id + '>' | |
138 | - | ||
139 | 95 | try: | |
140 | 96 | with open('../blob.dokk.org/pdf_to_text/' + item_id + '.txt', 'r') as file: | |
141 | 97 | item_plaintext = file.read() | |
142 | 98 | except: | |
143 | 99 | item_plaintext = '' | |
144 | 100 | ||
145 | - | data = query(f''' | |
146 | - | PREFIX library: <dokk:library:> | |
147 | - | PREFIX license: <dokk:license:> | |
148 | - | ||
149 | - | CONSTRUCT {{ | |
150 | - | ?item library:title ?title ; | |
151 | - | library:author ?author ; | |
152 | - | library:license ?license . | |
153 | - | ||
154 | - | ?license license:id ?license_id ; | |
155 | - | license:name ?license_name . | |
156 | - | }} | |
157 | - | WHERE {{ | |
158 | - | ?item | |
159 | - | library:title ?title ; | |
160 | - | library:author ?author ; | |
161 | - | library:license ?license . | |
162 | - | ||
163 | - | FILTER (?item = {item_iri}) | |
164 | - | ||
165 | - | OPTIONAL {{ | |
166 | - | ?license license:id ?license_id_optional ; | |
167 | - | license:name ?license_name_optional . | |
168 | - | }} | |
169 | - | ||
170 | - | BIND(COALESCE(?license_id_optional, SUBSTR(STR(?license), 14)) AS ?license_id) | |
171 | - | BIND(COALESCE(?license_name_optional, SUBSTR(STR(?license), 14)) AS ?license_name) | |
172 | - | }} | |
173 | - | ''', | |
174 | - | { | |
175 | - | '@context': { | |
176 | - | 'library': 'dokk:library:', | |
177 | - | 'license': 'dokk:license:', | |
178 | - | 'library:author': { '@container': '@set' }, | |
179 | - | 'library:license': { '@container': '@set' } | |
180 | - | }, | |
181 | - | 'library:title': {} | |
182 | - | }) | |
183 | - | ||
184 | - | return template('library_item.html', data=data['@graph'][0], item_id=item_id, plaintext=item_plaintext) | |
185 | - | ||
186 | - | @bottle.get('/license', name='licenses') | |
187 | - | def licenses(): | |
188 | - | """ | |
189 | - | """ | |
190 | - | ||
191 | - | data = query( | |
192 | - | ''' | |
193 | - | PREFIX license: <dokk:license:> | |
194 | - | ||
195 | - | SELECT * | |
196 | - | WHERE { | |
197 | - | ?license license:id ?id ; | |
198 | - | license:name ?name. | |
199 | - | } | |
200 | - | ORDER BY ASC(UCASE(?name)) | |
201 | - | ''') | |
202 | - | ||
203 | - | return template('licenses.html', data=data) | |
101 | + | return template('templates/library/item.tpl', item_id=item_id, plaintext=item_plaintext) | |
204 | 102 | ||
205 | - | @bottle.get('/manpages', name='manpages') | |
206 | - | def manpages(): | |
103 | + | @bottle.get('/license/<id>', name='license') | |
104 | + | def license(id): | |
207 | 105 | """ | |
208 | 106 | """ | |
209 | 107 | ||
210 | - | data = query( | |
211 | - | ''' | |
212 | - | PREFIX mp: <dokk:manpages:> | |
213 | - | ||
214 | - | SELECT DISTINCT ?distribution ?version | |
215 | - | WHERE { | |
216 | - | [] mp:source [ | |
217 | - | mp:distribution_version ?version ; | |
218 | - | mp:distribution_name ?distribution ; | |
219 | - | ] . | |
220 | - | } | |
221 | - | ORDER BY ?distribution ?version | |
222 | - | ''') | |
223 | - | ||
224 | - | return template('manpages.html', data=data) | |
108 | + | return template('templates/license/license.tpl', license_id=id) | |
225 | 109 | ||
226 | 110 | @bottle.get('/manpages/<distribution>/<version>', name='manpages_distribution') | |
227 | 111 | def manpages_distribution(distribution, version): | |
@@ -244,7 +128,7 @@ def manpages_distribution(distribution, version): | |||
244 | 128 | ORDER BY ?package | |
245 | 129 | ''') | |
246 | 130 | ||
247 | - | return template('manpages_distribution.html', data=data, distribution=distribution, version=version) | |
131 | + | return template('templates/manpages/distribution.tpl', data=data, distribution=distribution, version=version) | |
248 | 132 | ||
249 | 133 | @bottle.get('/manpages/<distribution>/<version>/<package>', name='manpages_package') | |
250 | 134 | def manpages_package(distribution, version, package): | |
@@ -268,7 +152,7 @@ def manpages_package(distribution, version, package): | |||
268 | 152 | ORDER BY ?filename | |
269 | 153 | ''') | |
270 | 154 | ||
271 | - | return template('manpages_package.html', data=data, distribution=distribution, version=version, package=package) | |
155 | + | return template('templates/manpages/package.tpl', data=data, distribution=distribution, version=version, package=package) | |
272 | 156 | ||
273 | 157 | @bottle.get('/manpages/<distribution>/<version>/<package>/<name>.<section>.<lang>', name='manpages_page') | |
274 | 158 | def manpages_page(distribution, version, package, name, section, lang): | |
@@ -325,7 +209,7 @@ def manpages_page(distribution, version, package, name, section, lang): | |||
325 | 209 | ||
326 | 210 | data['@graph'][0]['mp:html'] = html | |
327 | 211 | ||
328 | - | return template('manpage.html', data=data['@graph'][0], distribution=distribution, | |
212 | + | return template('templates/manpages/manpage.tpl', data=data['@graph'][0], distribution=distribution, | |
329 | 213 | version=version, package=package, name=name, section=section, lang=lang) | |
330 | 214 | ||
331 | 215 | @bottle.get('/manpages/<name>.<section>', name='manpages_disambiguation') | |
@@ -351,43 +235,7 @@ def manpages_disambiguation(name, section): | |||
351 | 235 | 'mp:source': {}, | |
352 | 236 | }) | |
353 | 237 | ||
354 | - | return template('manpage_disambiguation.html', name=name, section=section, data=data) | |
355 | - | ||
356 | - | @bottle.get('/license/<id>', name='license') | |
357 | - | def license(id): | |
358 | - | """ | |
359 | - | """ | |
360 | - | ||
361 | - | license_iri = 'license:' + id | |
362 | - | ||
363 | - | data = query(Template( | |
364 | - | ''' | |
365 | - | PREFIX license: <dokk:license:> | |
366 | - | ||
367 | - | DESCRIBE $license | |
368 | - | ''').substitute(license=license_iri)) | |
369 | - | ||
370 | - | return template('license.html', data=data) | |
371 | - | ||
372 | - | @bottle.get('/mimi_and_eunice', name='mimi_and_eunice') | |
373 | - | def mimi_and_eunice(): | |
374 | - | """ | |
375 | - | """ | |
376 | - | ||
377 | - | data = query( | |
378 | - | ''' | |
379 | - | PREFIX mimi_eunice: <dokk:mimi_and_eunice:> | |
380 | - | PREFIX xsd: <http://www.w3.org/2001/XMLSchema#> | |
381 | - | ||
382 | - | SELECT ?number ?title | |
383 | - | WHERE { | |
384 | - | ?id mimi_eunice:title ?title . | |
385 | - | BIND (SUBSTR(STR(?id), 22) as ?number) | |
386 | - | } | |
387 | - | ORDER BY ?number | |
388 | - | ''') | |
389 | - | ||
390 | - | return template('mimi_and_eunice.html', data=data) | |
238 | + | return template('templates/manpages/disambiguation.tpl', name=name, section=section, data=data) | |
391 | 239 | ||
392 | 240 | @bottle.get('/mimi_and_eunice/<number>', name='mimi_and_eunice_strip') | |
393 | 241 | def mimi_and_eunice_strip(number): | |
@@ -419,44 +267,25 @@ def mimi_and_eunice_strip(number): | |||
419 | 267 | } | |
420 | 268 | }) | |
421 | 269 | ||
422 | - | return template('mimi_and_eunice_strip.html', data=data['@graph'][0]) | |
270 | + | return template('templates/mimi_and_eunice/strip.tpl', data=data['@graph'][0]) | |
423 | 271 | ||
424 | 272 | @bottle.get('/articles', name='articles') | |
425 | 273 | def articles(): | |
426 | 274 | """ | |
427 | 275 | """ | |
428 | 276 | ||
429 | - | data = query( | |
430 | - | ''' | |
431 | - | PREFIX : <dokk:articles:> | |
277 | + | pages = [ page.stem for page in sorted(pathlib.Path('./pages').glob('*.html')) ] | |
278 | + | pages.remove('.html') | |
432 | 279 | ||
433 | - | SELECT ?iri ?title | |
434 | - | WHERE { | |
435 | - | ?iri :title ?title | |
436 | - | } | |
437 | - | ORDER BY ?title | |
438 | - | ''') | |
280 | + | return template('templates/articles.tpl', pages=pages) | |
439 | 281 | ||
440 | - | return template('articles.html', data=data) | |
441 | - | ||
442 | - | @bottle.get('/<id>', name='article') | |
443 | - | def article(id): | |
282 | + | @bottle.get('/', name='homepage') | |
283 | + | @bottle.get('/<page:path>', name='page') | |
284 | + | def article(page=''): | |
444 | 285 | """ | |
286 | + | Path for serving a "page". | |
445 | 287 | """ | |
446 | 288 | ||
447 | - | data = query( | |
448 | - | f''' | |
449 | - | PREFIX : <dokk:articles:> | |
450 | - | ||
451 | - | DESCRIBE <dokk:articles:{id}> | |
452 | - | ''', | |
453 | - | { | |
454 | - | '@context': { | |
455 | - | 'a': 'dokk:articles:' | |
456 | - | } | |
457 | - | }) | |
458 | - | ||
459 | - | if '@graph' not in data or len(data['@graph']) < 1: | |
460 | - | bottle.abort(404, "Article doesn't exist.") | |
289 | + | page += '.html' | |
461 | 290 | ||
462 | - | return template('article.html', data=data['@graph'][0]) | |
291 | + | return template(page) |
index 126555a..0000000 | |||
old size: 3K - new size: 0B | |||
deleted file mode: -rw-r--r-- |
Binary file |
index ccc56b4..c407dd0 | |||
old size: 10K - new size: 10K | |||
@@ -306,8 +306,7 @@ | |||
306 | 306 | y="-1.6478174" | |
307 | 307 | mask="url(#mask7616)" | |
308 | 308 | inkscape:export-xdpi="6.1399999" | |
309 | - | inkscape:export-ydpi="6.1399999" | |
310 | - | inkscape:export-filename="/home/zplus/zPlus/projects/dokk/dokk.org/website/dokk/static/dokk.png" /> | |
309 | + | inkscape:export-ydpi="6.1399999" /> | |
311 | 310 | </g> | |
312 | 311 | <g | |
313 | 312 | inkscape:groupmode="layer" |
index fad87a0..e749739 | |||
old size: 964B - new size: 912B | |||
@@ -1,4 +1,4 @@ | |||
1 | - | {% extends "base.html" %} | |
1 | + | {% extends "templates/base.tpl" %} | |
2 | 2 | ||
3 | 3 | {% block title %}{% endblock %} | |
4 | 4 | ||
@@ -7,11 +7,11 @@ | |||
7 | 7 | <div class="index"> | |
8 | 8 | <p><i>DOKK</i></p> | |
9 | 9 | ||
10 | - | <p>- <a href="{{ url('articles') }}">Articles</a></p> | |
11 | - | <p>- <a href="{{ url('library') }}">Library</a></p> | |
12 | - | <p>- <a href="{{ url('licenses') }}">Licenses</a></p> | |
13 | - | <p>- <a href="{{ url('manpages') }}">Man pages</a></p> | |
14 | - | <p>- <a href="{{ url('mimi_and_eunice') }}">Mimi & Eunice comic strips</a></p> | |
10 | + | <p>- <a href="/articles">Articles</a></p> | |
11 | + | <p>- <a href="/library">Library</a></p> | |
12 | + | <p>- <a href="/license">Licenses</a></p> | |
13 | + | <p>- <a href="/manpages">Man pages</a></p> | |
14 | + | <p>- <a href="/mimi_and_eunice">Mimi & Eunice comic strips</a></p> | |
15 | 15 | ||
16 | 16 | <br /><br /><br /><br /> | |
17 | 17 |
index 0000000..7dbeb5c | |||
old size: 0B - new size: 1K | |||
new file mode: -rw-r--r-- |
@@ -0,0 +1,46 @@ | |||
1 | + | {% set title = "1984 ehf." %} | |
2 | + | {% extends "templates/article.tpl" %} | |
3 | + | ||
4 | + | {% block article %} | |
5 | + | ||
6 | + | <div id="preamble"> | |
7 | + | <div class="sectionbody"> | |
8 | + | <div class="paragraph"> | |
9 | + | <p><strong>1984 ehf.</strong> is a web hosting company established in 2006 in Reykjavík, Iceland | |
10 | + | with the goal of offering hosting services that protect the civil and political | |
11 | + | rights of their customers, such as the freedom of expression and the right to | |
12 | + | anonymity and privacy<sup><a href="#cit1">[cit1]</a></sup>. The company uses exclusively renewable energy | |
13 | + | from geothermal and hydropower sources, and it is committed to using free | |
14 | + | software wherever possible.</p> | |
15 | + | </div> | |
16 | + | <div class="paragraph"> | |
17 | + | <p>1984 offers shared hosting, VPS hosting, and domain registration services.</p> | |
18 | + | </div> | |
19 | + | </div> | |
20 | + | </div> | |
21 | + | <div class="sect1"> | |
22 | + | <h2 id="_see_also">See also</h2> | |
23 | + | <div class="sectionbody"> | |
24 | + | <div class="ulist"> | |
25 | + | <ul> | |
26 | + | <li> | |
27 | + | <p><a href="Vikings_GmbH">Vikings GmbH</a></p> | |
28 | + | </li> | |
29 | + | </ul> | |
30 | + | </div> | |
31 | + | </div> | |
32 | + | </div> | |
33 | + | <div class="sect1"> | |
34 | + | <h2 id="_references">References</h2> | |
35 | + | <div class="sectionbody"> | |
36 | + | <div class="ulist bibliography"> | |
37 | + | <ul class="bibliography"> | |
38 | + | <li> | |
39 | + | <p><a id="cit1"></a>[cit1] <a href="https://1984.is/about/" class="bare">https://1984.is/about/</a></p> | |
40 | + | </li> | |
41 | + | </ul> | |
42 | + | </div> | |
43 | + | </div> | |
44 | + | </div> | |
45 | + | ||
46 | + | {% endblock %} |
index 0000000..b4fd2ae | |||
old size: 0B - new size: 2K | |||
new file mode: -rw-r--r-- |
@@ -0,0 +1,56 @@ | |||
1 | + | {% set title = "Bottle" %} | |
2 | + | {% extends "templates/article.tpl" %} | |
3 | + | ||
4 | + | {% block article %} | |
5 | + | ||
6 | + | <div id="preamble"> | |
7 | + | <div class="sectionbody"> | |
8 | + | <div class="paragraph"> | |
9 | + | <p><strong>Bottle</strong> is a micro web-framework for Python released under the <a href="license/MIT">MIT</a> | |
10 | + | license. It is distributed as a single-file module compatible with Python 2.7 | |
11 | + | and Python 3, and it has no dependencies other then the Python Standard | |
12 | + | Library<sup><a href="#cit1">[cit1]</a></sup>. The core functionalities of the framework can be extended by | |
13 | + | third-party plugins<sup><a href="#cit2">[cit2]</a></sup>. Bottle has support for both WSGI and CGI | |
14 | + | interfaces<sup><a href="#cit3">[cit3]</a></sup>. It was started in 2009 by Marcel Hellkamp<sup><a href="#cit4">[cit4]</a></sup>.</p> | |
15 | + | </div> | |
16 | + | </div> | |
17 | + | </div> | |
18 | + | <div class="sect1"> | |
19 | + | <h2 id="_hello_world">"Hello World"</h2> | |
20 | + | <div class="sectionbody"> | |
21 | + | <div class="listingblock"> | |
22 | + | <div class="content"> | |
23 | + | <pre class="highlight"><code class="language-python" data-lang="python">from bottle import get, run, template | |
24 | + | ||
25 | + | @get ('/hello/<name>') | |
26 | + | def index (name): | |
27 | + | return template ('<b>Hello {{name}}</b>!', name=name) | |
28 | + | ||
29 | + | run (host='localhost', port=8080)</code></pre> | |
30 | + | </div> | |
31 | + | </div> | |
32 | + | </div> | |
33 | + | </div> | |
34 | + | <div class="sect1"> | |
35 | + | <h2 id="_references">References</h2> | |
36 | + | <div class="sectionbody"> | |
37 | + | <div class="ulist bibliography"> | |
38 | + | <ul class="bibliography"> | |
39 | + | <li> | |
40 | + | <p><a id="cit1"></a>[cit1] <a href="https://bottlepy.org/docs/dev/" class="bare">https://bottlepy.org/docs/dev/</a></p> | |
41 | + | </li> | |
42 | + | <li> | |
43 | + | <p><a id="cit2"></a>[cit2] <a href="https://bottlepy.org/docs/dev/plugins/index.html" class="bare">https://bottlepy.org/docs/dev/plugins/index.html</a></p> | |
44 | + | </li> | |
45 | + | <li> | |
46 | + | <p><a id="cit3"></a>[cit3] <a href="https://bottlepy.org/docs/dev/deployment.html" class="bare">https://bottlepy.org/docs/dev/deployment.html</a></p> | |
47 | + | </li> | |
48 | + | <li> | |
49 | + | <p><a id="cit4"></a>[cit4] <a href="https://github.com/bottlepy/bottle/commit/c78437f04bd9631a9d9fc37f59a05b3448c7dacb" class="bare">https://github.com/bottlepy/bottle/commit/c78437f04bd9631a9d9fc37f59a05b3448c7dacb</a></p> | |
50 | + | </li> | |
51 | + | </ul> | |
52 | + | </div> | |
53 | + | </div> | |
54 | + | </div> | |
55 | + | ||
56 | + | {% endblock %} |
index 0000000..02e250d | |||
old size: 0B - new size: 1K | |||
new file mode: -rw-r--r-- |
@@ -0,0 +1,33 @@ | |||
1 | + | {% set title = "DOKK" %} | |
2 | + | {% extends "templates/article.tpl" %} | |
3 | + | ||
4 | + | {% block article %} | |
5 | + | ||
6 | + | <div id="preamble"> | |
7 | + | <div class="sectionbody"> | |
8 | + | <div class="paragraph"> | |
9 | + | <p><strong>DOKK</strong> is a collaborative, free database maintained by the | |
10 | + | <a href="The_Peers_Community">The Peers Community</a> <sup><a href="#cit1">[cit1]</a></sup>. | |
11 | + | The database uses a graph data model and is maintained as a collection of Turtle | |
12 | + | files<sup><a href="#cit2">[cit2]</a></sup>. It includes both user-submitted data as well as data imported from | |
13 | + | other sources.</p> | |
14 | + | </div> | |
15 | + | </div> | |
16 | + | </div> | |
17 | + | <div class="sect1"> | |
18 | + | <h2 id="_references">References</h2> | |
19 | + | <div class="sectionbody"> | |
20 | + | <div class="ulist bibliography"> | |
21 | + | <ul class="bibliography"> | |
22 | + | <li> | |
23 | + | <p><a id="cit1"></a>[cit1] <a href="https://dokk.org" class="bare">https://dokk.org</a></p> | |
24 | + | </li> | |
25 | + | <li> | |
26 | + | <p><a id="cit2"></a>[cit2] <a href="https://clif.peers.community/dokk/data.git/tree/HEAD/data" class="bare">https://clif.peers.community/dokk/data.git/tree/HEAD/data</a></p> | |
27 | + | </li> | |
28 | + | </ul> | |
29 | + | </div> | |
30 | + | </div> | |
31 | + | </div> | |
32 | + | ||
33 | + | {% endblock %} |
index 0000000..446f803 | |||
old size: 0B - new size: 1K | |||
new file mode: -rw-r--r-- |
@@ -0,0 +1,49 @@ | |||
1 | + | {% set title = "Dragora" %} | |
2 | + | {% extends "templates/article.tpl" %} | |
3 | + | ||
4 | + | {% block article %} | |
5 | + | ||
6 | + | <div id="preamble"> | |
7 | + | <div class="sectionbody"> | |
8 | + | <div class="paragraph"> | |
9 | + | <p><strong>Dragora</strong> is a free/libre, GNU/Linux distribution made from scratch. | |
10 | + | Dragora respects the freedom of the user with the values of free software and | |
11 | + | provides control to those who use it. Dragora is developed entirely by | |
12 | + | volunteers and it is published under the terms of the | |
13 | + | <a href="licenses/GPL-3.0-only">GNU General Public License</a> <sup><a href="#cit1">[cit1]</a></sup>.</p> | |
14 | + | </div> | |
15 | + | <div class="paragraph"> | |
16 | + | <p>Dragora also has received official recognition by the GNU Project and the | |
17 | + | Free Software Foundation as a Free System Distribution<sup><a href="#cit2">[cit2]</a></sup>.</p> | |
18 | + | </div> | |
19 | + | </div> | |
20 | + | </div> | |
21 | + | <div class="sect1"> | |
22 | + | <h2 id="_see_also">See also</h2> | |
23 | + | <div class="sectionbody"> | |
24 | + | <div class="ulist"> | |
25 | + | <ul> | |
26 | + | <li> | |
27 | + | <p><a href="The_Peers_Community">The Peers Community</a></p> | |
28 | + | </li> | |
29 | + | </ul> | |
30 | + | </div> | |
31 | + | </div> | |
32 | + | </div> | |
33 | + | <div class="sect1"> | |
34 | + | <h2 id="_references">References</h2> | |
35 | + | <div class="sectionbody"> | |
36 | + | <div class="ulist bibliography"> | |
37 | + | <ul class="bibliography"> | |
38 | + | <li> | |
39 | + | <p><a id="cit1"></a>[cit1] <a href="https://dragora.org/repo.fsl/doc/trunk/www/index.md" class="bare">https://dragora.org/repo.fsl/doc/trunk/www/index.md</a></p> | |
40 | + | </li> | |
41 | + | <li> | |
42 | + | <p><a id="cit2"></a>[cit2] <a href="https://www.gnu.org/distros/free-distros.html#for-pc" class="bare">https://www.gnu.org/distros/free-distros.html#for-pc</a></p> | |
43 | + | </li> | |
44 | + | </ul> | |
45 | + | </div> | |
46 | + | </div> | |
47 | + | </div> | |
48 | + | ||
49 | + | {% endblock %} |
index 0000000..e8240a9 | |||
old size: 0B - new size: 2K | |||
new file mode: -rw-r--r-- |
@@ -0,0 +1,44 @@ | |||
1 | + | {% set title = "ForgeFed" %} | |
2 | + | {% extends "templates/article.tpl" %} | |
3 | + | ||
4 | + | {% block article %} | |
5 | + | ||
6 | + | <div id="preamble"> | |
7 | + | <div class="sectionbody"> | |
8 | + | <div class="paragraph"> | |
9 | + | <p><strong>ForgeFed</strong> is an extension to the ActivityPub protocol that is currently under | |
10 | + | development. The goal of the project is to provide a server-to-server API for | |
11 | + | enabling federation across code management systems such as Gitea, Pagure, and | |
12 | + | <a href="Vervis_(software)">Vervis</a> <sup><a href="#cit1">[cit1]</a></sup>. Development of ForgeFed is carried out | |
13 | + | on its mailing list<sup><a href="#cit2">[cit2]</a></sup>.</p> | |
14 | + | </div> | |
15 | + | <div class="paragraph"> | |
16 | + | <p>ForgeFed was initially called <em>GitPub</em> but it was later renamed to reflect | |
17 | + | the broader scope of the project (which should embrace more than a single | |
18 | + | VCS), as well as to avoid any violation of the Git trademark<sup><a href="#cit3">[cit3]</a><a href="#cit4">[cit4]</a></sup>.</p> | |
19 | + | </div> | |
20 | + | </div> | |
21 | + | </div> | |
22 | + | <div class="sect1"> | |
23 | + | <h2 id="_references">References</h2> | |
24 | + | <div class="sectionbody"> | |
25 | + | <div class="ulist bibliography"> | |
26 | + | <ul class="bibliography"> | |
27 | + | <li> | |
28 | + | <p><a id="cit1"></a>[cit1] <a href="https://github.com/forgefed/forgefed" class="bare">https://github.com/forgefed/forgefed</a></p> | |
29 | + | </li> | |
30 | + | <li> | |
31 | + | <p><a id="cit2"></a>[cit2] <a href="https://framalistes.org/sympa/info/git-federation" class="bare">https://framalistes.org/sympa/info/git-federation</a></p> | |
32 | + | </li> | |
33 | + | <li> | |
34 | + | <p><a id="cit3"></a>[cit3] <a href="https://framalistes.org/sympa/arc/git-federation/2018-06/msg00117.html" class="bare">https://framalistes.org/sympa/arc/git-federation/2018-06/msg00117.html</a></p> | |
35 | + | </li> | |
36 | + | <li> | |
37 | + | <p><a id="cit4"></a>[cit4] <a href="https://framalistes.org/sympa/arc/git-federation/2018-07/msg00155.html" class="bare">https://framalistes.org/sympa/arc/git-federation/2018-07/msg00155.html</a></p> | |
38 | + | </li> | |
39 | + | </ul> | |
40 | + | </div> | |
41 | + | </div> | |
42 | + | </div> | |
43 | + | ||
44 | + | {% endblock %} |
index 0000000..e2e3ca7 | |||
old size: 0B - new size: 1K | |||
new file mode: -rw-r--r-- |
@@ -0,0 +1,39 @@ | |||
1 | + | {% set title = "GNU Hackers' Meetings" %} | |
2 | + | {% extends "templates/article.tpl" %} | |
3 | + | ||
4 | + | {% block article %} | |
5 | + | ||
6 | + | <div id="preamble"> | |
7 | + | <div class="sectionbody"> | |
8 | + | <div class="paragraph"> | |
9 | + | <p>The <strong>GNU Hackers' Meetings</strong>, or <strong>GHM</strong>, is an annual conference for people | |
10 | + | interested in the GNU operating system. The conference promotes an informal | |
11 | + | environment for developers and users of GNU to share experiences and exchange | |
12 | + | opinions. It usually lasts for three days over which multiple presentations | |
13 | + | are scheduled. Presentations are allowed to cover a wide range of subjects, | |
14 | + | both technical and social, related to the GNU project or to the Free Software | |
15 | + | movement as a whole. | |
16 | + | Participation in the conference is subject to prior registration and to the | |
17 | + | payment of a fee. A limited budget is available to assist those who cannot | |
18 | + | otherwise afford to attend the conference.</p> | |
19 | + | </div> | |
20 | + | <div class="paragraph"> | |
21 | + | <p>The first GHM took place in Orense, Spain in 2007 and every year it is held | |
22 | + | in a different location<sup><a href="#cit1">[cit1]</a></sup>.</p> | |
23 | + | </div> | |
24 | + | </div> | |
25 | + | </div> | |
26 | + | <div class="sect1"> | |
27 | + | <h2 id="_references">References</h2> | |
28 | + | <div class="sectionbody"> | |
29 | + | <div class="ulist bibliography"> | |
30 | + | <ul class="bibliography"> | |
31 | + | <li> | |
32 | + | <p><a id="cit1"></a>[cit1] <a href="https://www.gnu.org/ghm/previous.html" class="bare">https://www.gnu.org/ghm/previous.html</a></p> | |
33 | + | </li> | |
34 | + | </ul> | |
35 | + | </div> | |
36 | + | </div> | |
37 | + | </div> | |
38 | + | ||
39 | + | {% endblock %} |
index 0000000..9bc46e7 | |||
old size: 0B - new size: 2K | |||
new file mode: -rw-r--r-- |
@@ -0,0 +1,66 @@ | |||
1 | + | {% set title = "Gitea" %} | |
2 | + | {% extends "templates/article.tpl" %} | |
3 | + | ||
4 | + | {% block article %} | |
5 | + | ||
6 | + | <div id="preamble"> | |
7 | + | <div class="sectionbody"> | |
8 | + | <div class="paragraph"> | |
9 | + | <p><strong>Gitea</strong> ("Git with a cup of tea") is a web-based source-code management system | |
10 | + | for Git repositories. It is written in Go and is released under the | |
11 | + | <a href="licenses/MIT">MIT</a> license. Gitea was started in 2015<sup><a href="#cit1">[cit1]</a></sup> as a | |
12 | + | community-managed fork of <a href="Gogs_(software)">Gogs</a> in response to the | |
13 | + | single-maintainer management model adopted by Gogs<sup><a href="#cit2">[cit2]</a></sup>.</p> | |
14 | + | </div> | |
15 | + | </div> | |
16 | + | </div> | |
17 | + | <div class="sect1"> | |
18 | + | <h2 id="_history">History</h2> | |
19 | + | <div class="sectionbody"> | |
20 | + | <div class="paragraph"> | |
21 | + | <p>When the development of Gogs slowed down for a prolonged period of time in 2015 | |
22 | + | driven by a lack of activity of the project administrator<sup><a href="#cit3">[cit3]</a></sup>, some of its | |
23 | + | contributors decided to fork the project to a new one called <code>go-gitea</code>. | |
24 | + | Eventually, go-gitea was merged into Gogs once the administrator was back, and | |
25 | + | further development of the fork stopped. One year later however, the situation | |
26 | + | repeated and for this reason some of the Gogs contributors decided to continue | |
27 | + | the work on <code>go-gitea</code> in order to promote a community approach with more than | |
28 | + | one maintainer<sup><a href="#cit2">[cit2]</a></sup>. The fork was later renamed "Gitea".</p> | |
29 | + | </div> | |
30 | + | </div> | |
31 | + | </div> | |
32 | + | <div class="sect1"> | |
33 | + | <h2 id="_see_also">See also</h2> | |
34 | + | <div class="sectionbody"> | |
35 | + | <div class="ulist"> | |
36 | + | <ul> | |
37 | + | <li> | |
38 | + | <p><a href="Gogs_(software)">Gogs</a></p> | |
39 | + | </li> | |
40 | + | <li> | |
41 | + | <p><a href="NotABug.org">NotABug</a></p> | |
42 | + | </li> | |
43 | + | </ul> | |
44 | + | </div> | |
45 | + | </div> | |
46 | + | </div> | |
47 | + | <div class="sect1"> | |
48 | + | <h2 id="_references">References</h2> | |
49 | + | <div class="sectionbody"> | |
50 | + | <div class="ulist bibliography"> | |
51 | + | <ul class="bibliography"> | |
52 | + | <li> | |
53 | + | <p><a id="cit1"></a>[cit1] <a href="https://github.com/gogs/gogs/issues/1304" class="bare">https://github.com/gogs/gogs/issues/1304</a></p> | |
54 | + | </li> | |
55 | + | <li> | |
56 | + | <p><a id="cit2"></a>[cit2] <a href="https://blog.gitea.io/2016/12/welcome-to-gitea/" class="bare">https://blog.gitea.io/2016/12/welcome-to-gitea/</a></p> | |
57 | + | </li> | |
58 | + | <li> | |
59 | + | <p><a id="cit3"></a>[cit3] <a href="https://github.com/gogs/gogs/issues/1304" class="bare">https://github.com/gogs/gogs/issues/1304</a></p> | |
60 | + | </li> | |
61 | + | </ul> | |
62 | + | </div> | |
63 | + | </div> | |
64 | + | </div> | |
65 | + | ||
66 | + | {% endblock %} |
index 0000000..fde025d | |||
old size: 0B - new size: 3K | |||
new file mode: -rw-r--r-- |
@@ -0,0 +1,82 @@ | |||
1 | + | {% set title = "Gogs" %} | |
2 | + | {% extends "templates/article.tpl" %} | |
3 | + | ||
4 | + | {% block article %} | |
5 | + | ||
6 | + | <div id="preamble"> | |
7 | + | <div class="sectionbody"> | |
8 | + | <div class="paragraph"> | |
9 | + | <p><strong>Gogs</strong> ("Go Git Service") is a web-based source-code management system for Git | |
10 | + | repositories. It was initiated in February, 2014<sup><a href="#cit1">[cit1]</a></sup> by Jiahua Chen (also | |
11 | + | known as <code>unknwon</code><sup><a href="#cit2">[cit2]</a></sup>) and Lunny Xiao (also known as <code>lunny</code><sup><a href="#cit3">[cit3]</a></sup>) with | |
12 | + | the goal of building a free, self-hostable clone of GitHub<sup><a href="#cit4">[cit4]</a></sup>. | |
13 | + | It is written in Go and is released under the <a href="licenses/MIT">MIT</a> license.</p> | |
14 | + | </div> | |
15 | + | </div> | |
16 | + | </div> | |
17 | + | <div class="sect1"> | |
18 | + | <h2 id="_controversy_and_gitea_fork">Controversy and Gitea fork</h2> | |
19 | + | <div class="sectionbody"> | |
20 | + | <div class="paragraph"> | |
21 | + | <p>The development of Gogs slowed down in 2015 and Jiahua, the sole person with | |
22 | + | write access to the Gogs repository, stopped merging pull requests. This | |
23 | + | prolonged inactivity sparked doubts about the future of the project<sup><a href="#cit5">[cit5]</a><a href="#cit6">[cit6]</a></sup> | |
24 | + | and culminated with the creation of a fork called <code>go-gitea</code>. When Jiahua was | |
25 | + | back, however, <code>go-gitea</code> was merged to Gogs and the development of the fork | |
26 | + | stopped. One year later, in 2016, the situation repeated. For this reason some | |
27 | + | of the Gogs contributors who grew frustrated with the management of the project<sup><a href="#cit7">[cit7]</a></sup> | |
28 | + | decided to continue the work on <code>go-gitea</code><sup><a href="#cit8">[cit8]</a></sup>. The fork was later renamed | |
29 | + | <a href="Gitea_(software)">Gitea</a>.</p> | |
30 | + | </div> | |
31 | + | </div> | |
32 | + | </div> | |
33 | + | <div class="sect1"> | |
34 | + | <h2 id="_see_also">See also</h2> | |
35 | + | <div class="sectionbody"> | |
36 | + | <div class="ulist"> | |
37 | + | <ul> | |
38 | + | <li> | |
39 | + | <p><a href="Gitea_(software)">Gitea</a>, a fork of Gogs</p> | |
40 | + | </li> | |
41 | + | <li> | |
42 | + | <p><a href="NotABug.org">NotABug</a></p> | |
43 | + | </li> | |
44 | + | </ul> | |
45 | + | </div> | |
46 | + | </div> | |
47 | + | </div> | |
48 | + | <div class="sect1"> | |
49 | + | <h2 id="_references">References</h2> | |
50 | + | <div class="sectionbody"> | |
51 | + | <div class="ulist bibliography"> | |
52 | + | <ul class="bibliography"> | |
53 | + | <li> | |
54 | + | <p><a id="cit1"></a>[cit1] <a href="https://github.com/gogs/gogs/commit/475e3471b4e8da8776fe7e66a3390c8a30c19f08" class="bare">https://github.com/gogs/gogs/commit/475e3471b4e8da8776fe7e66a3390c8a30c19f08</a></p> | |
55 | + | </li> | |
56 | + | <li> | |
57 | + | <p><a id="cit2"></a>[cit2] <a href="https://about.me/unknwon" class="bare">https://about.me/unknwon</a></p> | |
58 | + | </li> | |
59 | + | <li> | |
60 | + | <p><a id="cit3"></a>[cit3] <a href="http://lunny.info" class="bare">http://lunny.info</a></p> | |
61 | + | </li> | |
62 | + | <li> | |
63 | + | <p><a id="cit4"></a>[cit4] <a href="https://github.com/gogs/gogs/commit/4836fea8767c38f175f59f8f66579e76fe6354f5" class="bare">https://github.com/gogs/gogs/commit/4836fea8767c38f175f59f8f66579e76fe6354f5</a></p> | |
64 | + | </li> | |
65 | + | <li> | |
66 | + | <p><a id="cit5"></a>[cit5] <a href="https://github.com/gogs/gogs/issues/1304" class="bare">https://github.com/gogs/gogs/issues/1304</a></p> | |
67 | + | </li> | |
68 | + | <li> | |
69 | + | <p><a id="cit6"></a>[cit6] <a href="https://github.com/gogs/gogs/issues/1363" class="bare">https://github.com/gogs/gogs/issues/1363</a></p> | |
70 | + | </li> | |
71 | + | <li> | |
72 | + | <p><a id="cit7"></a>[cit7] <a href="https://github.com/go-gitea/gitea/issues/99" class="bare">https://github.com/go-gitea/gitea/issues/99</a></p> | |
73 | + | </li> | |
74 | + | <li> | |
75 | + | <p><a id="cit8"></a>[cit8] <a href="https://blog.gitea.io/2016/12/welcome-to-gitea/" class="bare">https://blog.gitea.io/2016/12/welcome-to-gitea/</a></p> | |
76 | + | </li> | |
77 | + | </ul> | |
78 | + | </div> | |
79 | + | </div> | |
80 | + | </div> | |
81 | + | ||
82 | + | {% endblock %} |
index 0000000..8ffed5e | |||
old size: 0B - new size: 3K | |||
new file mode: -rw-r--r-- |
@@ -0,0 +1,73 @@ | |||
1 | + | {% set title = "Header Dictionary Triples" %} | |
2 | + | {% extends "templates/article.tpl" %} | |
3 | + | ||
4 | + | {% block article %} | |
5 | + | ||
6 | + | <div id="preamble"> | |
7 | + | <div class="sectionbody"> | |
8 | + | <div class="paragraph"> | |
9 | + | <p><strong>Header Dictionary Triples</strong>, or <strong>HDT</strong>, is a binary serialization format for RDF | |
10 | + | datasets. It is capable of compressing RDF data while maintaining search and | |
11 | + | browse operations without prior decompression<sup><a href="#cit1">[cit1]</a></sup>. HDT is an open format in | |
12 | + | progress of standardization<sup><a href="#cit2">[cit2]</a></sup>.</p> | |
13 | + | </div> | |
14 | + | </div> | |
15 | + | </div> | |
16 | + | <div class="sect1"> | |
17 | + | <h2 id="_hdt_tools">HDT tools</h2> | |
18 | + | <div class="sectionbody"> | |
19 | + | <div class="ulist"> | |
20 | + | <ul> | |
21 | + | <li> | |
22 | + | <p><code>hdt-cpp</code> is a library and command-line tool to create and search HDT files<sup><a href="#cit3">[cit3]</a></sup></p> | |
23 | + | </li> | |
24 | + | <li> | |
25 | + | <p><code>hdt-java</code> allows integration of HDT with Apache Jena and Fuseki<sup><a href="#cit4">[cit4]</a></sup></p> | |
26 | + | </li> | |
27 | + | <li> | |
28 | + | <p><code>HDT-it!</code> is a GUI application for browsing HDT files, which includes a 3D | |
29 | + | Visualization of the RDF adjacency matrix of the RDF Graph<sup><a href="#cit:5">[cit:5]</a></sup></p> | |
30 | + | </li> | |
31 | + | </ul> | |
32 | + | </div> | |
33 | + | </div> | |
34 | + | </div> | |
35 | + | <div class="sect1"> | |
36 | + | <h2 id="_gallery">Gallery</h2> | |
37 | + | <div class="sectionbody"> | |
38 | + | <div class="videoblock"> | |
39 | + | <div class="content"> | |
40 | + | <video src="https://archive.dokk.org/videos/hdt-it-rdf-demo.mp4" width="20%" controls> | |
41 | + | Your browser does not support the video tag. | |
42 | + | </video> | |
43 | + | </div> | |
44 | + | </div> | |
45 | + | <div class="paragraph"> | |
46 | + | <p><span class="image"><img src="https://archive.dokk.org/images/hdt-it-screenshot-1.png" alt="HDT-it!" width="20%" title="HDT-it!"></span> | |
47 | + | <span class="image"><img src="https://archive.dokk.org/images/hdt-it-screenshot-2.png" alt="HDT-it!" width="20%" title="HDT-it!"></span></p> | |
48 | + | </div> | |
49 | + | </div> | |
50 | + | </div> | |
51 | + | <div class="sect1"> | |
52 | + | <h2 id="_references">References</h2> | |
53 | + | <div class="sectionbody"> | |
54 | + | <div class="ulist bibliography"> | |
55 | + | <ul class="bibliography"> | |
56 | + | <li> | |
57 | + | <p><a id="cit1"></a>[cit1] <a href="http://www.rdfhdt.org/what-is-hdt/" class="bare">http://www.rdfhdt.org/what-is-hdt/</a></p> | |
58 | + | </li> | |
59 | + | <li> | |
60 | + | <p><a id="cit2"></a>[cit2] <a href="https://www.w3.org/Submission/2011/03/" class="bare">https://www.w3.org/Submission/2011/03/</a></p> | |
61 | + | </li> | |
62 | + | <li> | |
63 | + | <p><a id="cit3"></a>[cit3] <a href="http://www.rdfhdt.org/manual-of-the-c-hdt-library/" class="bare">http://www.rdfhdt.org/manual-of-the-c-hdt-library/</a></p> | |
64 | + | </li> | |
65 | + | <li> | |
66 | + | <p><a id="cit4"></a>[cit4] <a href="http://www.rdfhdt.org/manual-of-hdt-integration-with-jena/" class="bare">http://www.rdfhdt.org/manual-of-hdt-integration-with-jena/</a></p> | |
67 | + | </li> | |
68 | + | </ul> | |
69 | + | </div> | |
70 | + | </div> | |
71 | + | </div> | |
72 | + | ||
73 | + | {% endblock %} |
index 0000000..f84032d | |||
old size: 0B - new size: 2K | |||
new file mode: -rw-r--r-- |
@@ -0,0 +1,60 @@ | |||
1 | + | {% set title = "Minifree Ltd" %} | |
2 | + | {% extends "templates/article.tpl" %} | |
3 | + | ||
4 | + | {% block article %} | |
5 | + | ||
6 | + | <div id="preamble"> | |
7 | + | <div class="sectionbody"> | |
8 | + | <div class="paragraph"> | |
9 | + | <p><strong>Minifree Ltd</strong> (formerly trading as Gluglug) is a supplier from Essex, UK that | |
10 | + | sells computers with only free software, including the Libreboot BIOS and | |
11 | + | GNU/Linux operating systems certified by the Free Software Foundation under the | |
12 | + | <em>Respects Your Freedom</em> certification program. The company was founded by Leah | |
13 | + | Rowe, who is also the founder of Libreboot. Profits from Minifree | |
14 | + | sales are used to fund the development of the Libreboot project<sup><a href="#cit2">[cit2]</a></sup>.</p> | |
15 | + | </div> | |
16 | + | <div class="paragraph"> | |
17 | + | <p>The word "Minifree" is a pun based on the ministries in the George Orwell’s 1984 | |
18 | + | novel<sup><a href="#cit1">[cit1]</a></sup>.</p> | |
19 | + | </div> | |
20 | + | </div> | |
21 | + | </div> | |
22 | + | <div class="sect1"> | |
23 | + | <h2 id="_gallery">Gallery</h2> | |
24 | + | <div class="sectionbody"> | |
25 | + | <div class="paragraph"> | |
26 | + | <p><span class="image"><img src="https://archive.dokk.org/images/minifree-t400.png" alt="Libreboot T400" width="20%" title="Libreboot T400"></span> | |
27 | + | <span class="image"><img src="https://archive.dokk.org/images/minifree-x200.png" alt="Libreboot X200" width="20%" title="Libreboot X200"></span> | |
28 | + | <span class="image"><img src="https://archive.dokk.org/images/minifree-x200-tablet.png" alt="Libreboot X200 Tablet" width="20%" title="Libreboot X200 Tablet"></span></p> | |
29 | + | </div> | |
30 | + | </div> | |
31 | + | </div> | |
32 | + | <div class="sect1"> | |
33 | + | <h2 id="_see_also">See also</h2> | |
34 | + | <div class="sectionbody"> | |
35 | + | <div class="ulist"> | |
36 | + | <ul> | |
37 | + | <li> | |
38 | + | <p><a href="The_Peers_Community">The Peers Community</a></p> | |
39 | + | </li> | |
40 | + | </ul> | |
41 | + | </div> | |
42 | + | </div> | |
43 | + | </div> | |
44 | + | <div class="sect1"> | |
45 | + | <h2 id="_references">References</h2> | |
46 | + | <div class="sectionbody"> | |
47 | + | <div class="ulist bibliography"> | |
48 | + | <ul class="bibliography"> | |
49 | + | <li> | |
50 | + | <p><a id="cit1"></a>[cit1] <a href="https://minifree.org/faq/" class="bare">https://minifree.org/faq/</a></p> | |
51 | + | </li> | |
52 | + | <li> | |
53 | + | <p><a id="cit2"></a>[cit2] <a href="https://minifree.org/about/" class="bare">https://minifree.org/about/</a></p> | |
54 | + | </li> | |
55 | + | </ul> | |
56 | + | </div> | |
57 | + | </div> | |
58 | + | </div> | |
59 | + | ||
60 | + | {% endblock %} |
index 0000000..89db878 | |||
old size: 0B - new size: 2K | |||
new file mode: -rw-r--r-- |
@@ -0,0 +1,49 @@ | |||
1 | + | {% set title = "NotABug.org" %} | |
2 | + | {% extends "templates/article.tpl" %} | |
3 | + | ||
4 | + | {% block article %} | |
5 | + | ||
6 | + | <div id="preamble"> | |
7 | + | <div class="sectionbody"> | |
8 | + | <div class="paragraph"> | |
9 | + | <p><strong>NotABug.org</strong> is a web-based hosting service for version control using Git, | |
10 | + | based on the <a href="Gogs_(software)">Gogs</a> code collaboration platform. While | |
11 | + | registration is open to everyone, only those projects that meet the | |
12 | + | <em>Free Software</em> or the <em>Free Culture</em> definition are accepted on the | |
13 | + | website<sup><a href="#cit1">[cit1]</a></sup>. NotABug was started in 2015 by <a href="The_Peers_Community">The Peers Community</a> <sup><a href="#cit2">[cit2]</a></sup> | |
14 | + | and is administered by Hein-Pieter van Braam-Stewart<sup><a href="#cit3">[cit3]</a></sup>.</p> | |
15 | + | </div> | |
16 | + | </div> | |
17 | + | </div> | |
18 | + | <div class="sect1"> | |
19 | + | <h2 id="_see_also">See also</h2> | |
20 | + | <div class="sectionbody"> | |
21 | + | <div class="ulist"> | |
22 | + | <ul> | |
23 | + | <li> | |
24 | + | <p><a href="The_Peers_Community">The Peers Community</a></p> | |
25 | + | </li> | |
26 | + | </ul> | |
27 | + | </div> | |
28 | + | </div> | |
29 | + | </div> | |
30 | + | <div class="sect1"> | |
31 | + | <h2 id="_references">References</h2> | |
32 | + | <div class="sectionbody"> | |
33 | + | <div class="ulist bibliography"> | |
34 | + | <ul class="bibliography"> | |
35 | + | <li> | |
36 | + | <p><a id="cit1"></a>[cit1] <a href="https://notabug.org/about#whatisnotabug" class="bare">https://notabug.org/about#whatisnotabug</a></p> | |
37 | + | </li> | |
38 | + | <li> | |
39 | + | <p><a id="cit2"></a>[cit2] <a href="https://web.archive.org/web/20180807121608/https://freepo.st/post/li8m93gf" class="bare">https://web.archive.org/web/20180807121608/https://freepo.st/post/li8m93gf</a></p> | |
40 | + | </li> | |
41 | + | <li> | |
42 | + | <p><a id="cit3"></a>[cit3] <a href="https://notabug.org/about#whoweare" class="bare">https://notabug.org/about#whoweare</a></p> | |
43 | + | </li> | |
44 | + | </ul> | |
45 | + | </div> | |
46 | + | </div> | |
47 | + | </div> | |
48 | + | ||
49 | + | {% endblock %} |
index 0000000..2ee2793 | |||
old size: 0B - new size: 2K | |||
new file mode: -rw-r--r-- |
@@ -0,0 +1,54 @@ | |||
1 | + | {% set title = "The Peers Community" %} | |
2 | + | {% extends "templates/article.tpl" %} | |
3 | + | ||
4 | + | {% block article %} | |
5 | + | ||
6 | + | <div id="preamble"> | |
7 | + | <div class="sectionbody"> | |
8 | + | <div class="paragraph"> | |
9 | + | <p><strong>The Peers Community</strong> is a community of people that collaborate on supporting | |
10 | + | free culture and free software development<sup><a href="#cit2">[cit2]</a></sup>.</p> | |
11 | + | </div> | |
12 | + | </div> | |
13 | + | </div> | |
14 | + | <div class="sect1"> | |
15 | + | <h2 id="_projects_jam">Projects Jam</h2> | |
16 | + | <div class="sectionbody"> | |
17 | + | <div class="paragraph"> | |
18 | + | <p>The <code>Jam</code> is a weekly meeting that takes place on the community IRC channel | |
19 | + | on Fridays at 19:00Z-21:00Z. Participants can ask for help on any issue related | |
20 | + | to free culture and free software projects, and the community works to fix them. | |
21 | + | The first session took place on March, 2nd 2018<sup><a href="#cit1">[cit1]</a></sup>, initiated by vaeringjar.</p> | |
22 | + | </div> | |
23 | + | </div> | |
24 | + | </div> | |
25 | + | <div class="sect1"> | |
26 | + | <h2 id="_gallery">Gallery</h2> | |
27 | + | <div class="sectionbody"> | |
28 | + | <div class="videoblock"> | |
29 | + | <div class="title">Presentation by Jorge Maldonado Ventura at the <a href="GNU_Hackers_Meeting">GHM</a> 2017</div> | |
30 | + | <div class="content"> | |
31 | + | <video src="https://archive.dokk.org/videos/2017-08--maldonadoventura--peers--ghm.mp4" width="20%" controls> | |
32 | + | Your browser does not support the video tag. | |
33 | + | </video> | |
34 | + | </div> | |
35 | + | </div> | |
36 | + | </div> | |
37 | + | </div> | |
38 | + | <div class="sect1"> | |
39 | + | <h2 id="_references">References</h2> | |
40 | + | <div class="sectionbody"> | |
41 | + | <div class="ulist bibliography"> | |
42 | + | <ul class="bibliography"> | |
43 | + | <li> | |
44 | + | <p><a id="cit1"></a>[cit1] <a href="https://peers.community/archive/20180302/projects-jam-20180302/" class="bare">https://peers.community/archive/20180302/projects-jam-20180302/</a></p> | |
45 | + | </li> | |
46 | + | <li> | |
47 | + | <p><a id="cit2"></a>[cit2] <a href="https://peers.community/why/" class="bare">https://peers.community/why/</a></p> | |
48 | + | </li> | |
49 | + | </ul> | |
50 | + | </div> | |
51 | + | </div> | |
52 | + | </div> | |
53 | + | ||
54 | + | {% endblock %} |
index 0000000..5ea96d0 | |||
old size: 0B - new size: 2K | |||
new file mode: -rw-r--r-- |
@@ -0,0 +1,77 @@ | |||
1 | + | {% set title = "TuxFamily" %} | |
2 | + | {% extends "templates/article.tpl" %} | |
3 | + | ||
4 | + | {% block article %} | |
5 | + | ||
6 | + | <div id="preamble"> | |
7 | + | <div class="sectionbody"> | |
8 | + | <div class="paragraph"> | |
9 | + | <p><strong>TuxFamily</strong> is a French non-profit organization founded in 2004<sup><a href="#cit1">[cit1]</a></sup> that | |
10 | + | provides free hosting for projects adhering to the free software philosophy<sup><a href="#cit2">[cit2]</a></sup>. | |
11 | + | TuxFamily’s hosting facilities are controlled with | |
12 | + | <a href="virtual_hosting_platform_for_free_software">VHFFS</a>, a software developed | |
13 | + | by TuxFamily members that allows administrators to accept or refuse services | |
14 | + | requested by users via a web interface<sup><a href="#cit3">[cit3]</a></sup>. As of 2018 TuxFamily hosts more | |
15 | + | than 2700 projects<sup><a href="#cit2">[cit2]</a></sup>.</p> | |
16 | + | </div> | |
17 | + | </div> | |
18 | + | </div> | |
19 | + | <div class="sect1"> | |
20 | + | <h2 id="_services">Services</h2> | |
21 | + | <div class="sectionbody"> | |
22 | + | <div class="paragraph"> | |
23 | + | <p>TuxFamily makes these services available to free projects:</p> | |
24 | + | </div> | |
25 | + | <div class="ulist"> | |
26 | + | <ul> | |
27 | + | <li> | |
28 | + | <p>Web hosting (PHP5 or Python<sup><a href="#cit4">[cit4]</a></sup>)</p> | |
29 | + | </li> | |
30 | + | <li> | |
31 | + | <p>MySQL and PostgreSQL databases</p> | |
32 | + | </li> | |
33 | + | <li> | |
34 | + | <p>CVS, Subversion, Mercurial, and GIT repositories hosting</p> | |
35 | + | </li> | |
36 | + | <li> | |
37 | + | <p>Manage domain names (DNS hosting)</p> | |
38 | + | </li> | |
39 | + | <li> | |
40 | + | <p>Email accounts (reachable over POP, IMAP or webmails)</p> | |
41 | + | </li> | |
42 | + | <li> | |
43 | + | <p>Mailing lists</p> | |
44 | + | </li> | |
45 | + | <li> | |
46 | + | <p>Download area of 1GB</p> | |
47 | + | </li> | |
48 | + | <li> | |
49 | + | <p>200MB quota for all groups, not including the download area</p> | |
50 | + | </li> | |
51 | + | </ul> | |
52 | + | </div> | |
53 | + | </div> | |
54 | + | </div> | |
55 | + | <div class="sect1"> | |
56 | + | <h2 id="_references">References</h2> | |
57 | + | <div class="sectionbody"> | |
58 | + | <div class="ulist bibliography"> | |
59 | + | <ul class="bibliography"> | |
60 | + | <li> | |
61 | + | <p><a id="cit1"></a>[cit1] <a href="https://www.tuxfamily.org/en/organization" class="bare">https://www.tuxfamily.org/en/organization</a></p> | |
62 | + | </li> | |
63 | + | <li> | |
64 | + | <p><a id="cit2"></a>[cit2] <a href="https://www.tuxfamily.org/en/about" class="bare">https://www.tuxfamily.org/en/about</a></p> | |
65 | + | </li> | |
66 | + | <li> | |
67 | + | <p><a id="cit3"></a>[cit3] <a href="https://vhffs.org" class="bare">https://vhffs.org</a></p> | |
68 | + | </li> | |
69 | + | <li> | |
70 | + | <p><a id="cit4"></a>[cit4] <a href="https://faq.tuxfamily.org/WebArea/Compat/Python" class="bare">https://faq.tuxfamily.org/WebArea/Compat/Python</a></p> | |
71 | + | </li> | |
72 | + | </ul> | |
73 | + | </div> | |
74 | + | </div> | |
75 | + | </div> | |
76 | + | ||
77 | + | {% endblock %} |
index 0000000..9345f52 | |||
old size: 0B - new size: 1K | |||
new file mode: -rw-r--r-- |
@@ -0,0 +1,42 @@ | |||
1 | + | {% set title = "Vervis" %} | |
2 | + | {% extends "templates/article.tpl" %} | |
3 | + | ||
4 | + | {% block article %} | |
5 | + | ||
6 | + | <div id="preamble"> | |
7 | + | <div class="sectionbody"> | |
8 | + | <div class="paragraph"> | |
9 | + | <p><strong>Vervis</strong> is a web-based project management system that is still under | |
10 | + | development. It is written in Haskell with the Yesod web framework and is | |
11 | + | released under the <a href="licenses/AGPL-3.0-only">AGPLv3</a> license. It features | |
12 | + | support for Git and Darcs, and is expected to support <a href="ForgeFed">ForgeFed</a> | |
13 | + | <sup><a href="#cit1">[cit1]</a></sup>.</p> | |
14 | + | </div> | |
15 | + | </div> | |
16 | + | </div> | |
17 | + | <div class="sect1"> | |
18 | + | <h2 id="_see_also">See also</h2> | |
19 | + | <div class="sectionbody"> | |
20 | + | <div class="ulist"> | |
21 | + | <ul> | |
22 | + | <li> | |
23 | + | <p><a href="The_Peers_Community">The Peers Community</a></p> | |
24 | + | </li> | |
25 | + | </ul> | |
26 | + | </div> | |
27 | + | </div> | |
28 | + | </div> | |
29 | + | <div class="sect1"> | |
30 | + | <h2 id="_references">References</h2> | |
31 | + | <div class="sectionbody"> | |
32 | + | <div class="ulist bibliography"> | |
33 | + | <ul class="bibliography"> | |
34 | + | <li> | |
35 | + | <p><a id="cit1"></a>[cit1] <a href="https://dev.angeley.es" class="bare">https://dev.angeley.es</a></p> | |
36 | + | </li> | |
37 | + | </ul> | |
38 | + | </div> | |
39 | + | </div> | |
40 | + | </div> | |
41 | + | ||
42 | + | {% endblock %} |
index 0000000..0a0b103 | |||
old size: 0B - new size: 1012B | |||
new file mode: -rw-r--r-- |
@@ -0,0 +1,41 @@ | |||
1 | + | {% set title = "Vikings GmbH" %} | |
2 | + | {% extends "templates/article.tpl" %} | |
3 | + | ||
4 | + | {% block article %} | |
5 | + | ||
6 | + | <div id="preamble"> | |
7 | + | <div class="sectionbody"> | |
8 | + | <div class="paragraph"> | |
9 | + | <p><strong>Vikings GmbH</strong> is a hosting provider located in Eschborn, Germany which | |
10 | + | specializes in free/libre hosting services. It offers Virtual Servers, | |
11 | + | Dedicated Servers, and Manged Server based exclusively on free software. The | |
12 | + | company was founded by Thomas Umbach<sup><a href="#cit1">[cit1]</a></sup>.</p> | |
13 | + | </div> | |
14 | + | </div> | |
15 | + | </div> | |
16 | + | <div class="sect1"> | |
17 | + | <h2 id="_see_also">See also</h2> | |
18 | + | <div class="sectionbody"> | |
19 | + | <div class="ulist"> | |
20 | + | <ul> | |
21 | + | <li> | |
22 | + | <p><a href="1984_ehf.">1984 ehf.</a></p> | |
23 | + | </li> | |
24 | + | </ul> | |
25 | + | </div> | |
26 | + | </div> | |
27 | + | </div> | |
28 | + | <div class="sect1"> | |
29 | + | <h2 id="_references">References</h2> | |
30 | + | <div class="sectionbody"> | |
31 | + | <div class="ulist bibliography"> | |
32 | + | <ul class="bibliography"> | |
33 | + | <li> | |
34 | + | <p><a id="cit1"></a>[cit1] <a href="https://vikings.net/legalnotice.html" class="bare">https://vikings.net/legalnotice.html</a></p> | |
35 | + | </li> | |
36 | + | </ul> | |
37 | + | </div> | |
38 | + | </div> | |
39 | + | </div> | |
40 | + | ||
41 | + | {% endblock %} |
index 0000000..7d5ab76 | |||
old size: 0B - new size: 336B | |||
new file mode: -rw-r--r-- |
@@ -0,0 +1,11 @@ | |||
1 | + | {% set title = "archive-webextension" %} | |
2 | + | {% extends "templates/article.tpl" %} | |
3 | + | ||
4 | + | {% block article %} | |
5 | + | ||
6 | + | <div class="paragraph"> | |
7 | + | <p><strong>archive-webextension</strong> is a WebExtension for saving web pages to the Internet | |
8 | + | Archive. It’s developed by <a href="The_Peers_Community">The Peers Community</a>.</p> | |
9 | + | </div> | |
10 | + | ||
11 | + | {% endblock %} |
index 0000000..5d389b5 | |||
old size: 0B - new size: 2K | |||
new file mode: -rw-r--r-- |
@@ -0,0 +1,56 @@ | |||
1 | + | {% set title = "freepost" %} | |
2 | + | {% extends "templates/article.tpl" %} | |
3 | + | ||
4 | + | {% block article %} | |
5 | + | ||
6 | + | <div id="preamble"> | |
7 | + | <div class="sectionbody"> | |
8 | + | <div class="paragraph"> | |
9 | + | <p><strong>freepost</strong> is a web-based discussion board developed by | |
10 | + | <a href="The_Peers_Community">The Peers Community</a>, where users can submit links | |
11 | + | and text posts that other users can vote and discuss. An instance of freepost | |
12 | + | is hosted on <a href="TuxFamily">TuxFamily</a> and accessible at <code><a href="https://freepo.st" class="bare">https://freepo.st</a></code>.</p> | |
13 | + | </div> | |
14 | + | <div class="paragraph"> | |
15 | + | <p>It is one of the early projects developed by the community<sup><a href="#cit1">[cit1]</a></sup>.</p> | |
16 | + | </div> | |
17 | + | </div> | |
18 | + | </div> | |
19 | + | <div class="sect1"> | |
20 | + | <h2 id="_development">Development</h2> | |
21 | + | <div class="sectionbody"> | |
22 | + | <div class="paragraph"> | |
23 | + | <p>The software was initially developed with the Symfony PHP framework<sup><a href="#cit2">[cit2]</a><a href="#cit3">[cit3]</a></sup>, | |
24 | + | but it was later rewritten in plain PHP<sup><a href="#cit4">[cit4]</a><a href="#cit5">[cit5]</a></sup>. In 2018 it was rewritten | |
25 | + | again from scratch using the <a href="Bottle_(web_framework)">Bottle</a> web framework, | |
26 | + | thus changing the code base from PHP to Python^<em class="red yellow-background">Add | |
27 | + | references</em>^.</p> | |
28 | + | </div> | |
29 | + | </div> | |
30 | + | </div> | |
31 | + | <div class="sect1"> | |
32 | + | <h2 id="_references">References</h2> | |
33 | + | <div class="sectionbody"> | |
34 | + | <div class="ulist bibliography"> | |
35 | + | <ul class="bibliography"> | |
36 | + | <li> | |
37 | + | <p><a id="cit1"></a>[cit1] <a href="https://web.archive.org/web/20150310050551/http://peers.community:80/" class="bare">https://web.archive.org/web/20150310050551/http://peers.community:80/</a></p> | |
38 | + | </li> | |
39 | + | <li> | |
40 | + | <p><a id="cit2"></a>[cit2] <a href="https://notabug.org/zPlus/freepost/commit/5b034991ac1190f7149e3efa68d740220b0b8090" class="bare">https://notabug.org/zPlus/freepost/commit/5b034991ac1190f7149e3efa68d740220b0b8090</a></p> | |
41 | + | </li> | |
42 | + | <li> | |
43 | + | <p><a id="cit3"></a>[cit3] <a href="https://web.archive.org/web/20150129023118/https://symfony.com/projects" class="bare">https://web.archive.org/web/20150129023118/https://symfony.com/projects</a></p> | |
44 | + | </li> | |
45 | + | <li> | |
46 | + | <p><a id="cit4"></a>[cit4] <a href="https://freepost.peers.community/post/gcghb5oqf0" class="bare">https://freepost.peers.community/post/gcghb5oqf0</a></p> | |
47 | + | </li> | |
48 | + | <li> | |
49 | + | <p><a id="cit5"></a>[cit5] <a href="https://notabug.org/zPlus/freepost/commit/b6a047b015c0b17a8fe83a62996b09dca9eca7d6" class="bare">https://notabug.org/zPlus/freepost/commit/b6a047b015c0b17a8fe83a62996b09dca9eca7d6</a></p> | |
50 | + | </li> | |
51 | + | </ul> | |
52 | + | </div> | |
53 | + | </div> | |
54 | + | </div> | |
55 | + | ||
56 | + | {% endblock %} |
index 0000000..e6f58bd | |||
old size: 0B - new size: 2K | |||
new file mode: -rw-r--r-- |
@@ -0,0 +1,73 @@ | |||
1 | + | {% set title = "lib.reviews" %} | |
2 | + | {% extends "templates/article.tpl" %} | |
3 | + | ||
4 | + | {% block article %} | |
5 | + | ||
6 | + | <div id="preamble"> | |
7 | + | <div class="sectionbody"> | |
8 | + | <div class="paragraph"> | |
9 | + | <p><strong>lib.reviews</strong> is a web-based platform for writing reviews about anything. It | |
10 | + | was started in 2016 by Erik Moeller with the goal of creating a free and open | |
11 | + | platform focusing on high quality, trustworthy reviews available under free | |
12 | + | licenses<sup><a href="#cit1">[cit1]</a></sup>. As of August 2018 the database contains more than 800 | |
13 | + | reviews<sup><a href="#cit2">[cit2]</a></sup>. Registration to the website is not open, and requires an | |
14 | + | invitation from other users.</p> | |
15 | + | </div> | |
16 | + | </div> | |
17 | + | </div> | |
18 | + | <div class="sect1"> | |
19 | + | <h2 id="_teams">Teams</h2> | |
20 | + | <div class="sectionbody"> | |
21 | + | <div class="paragraph"> | |
22 | + | <p>Users of the platform can organize their work by joining thematic groups called | |
23 | + | "teams"<sup><a href="#cit3">[cit3]</a></sup>. Each team focus on reviewing a particular category of things. | |
24 | + | Some examples are the "F-droid reviews" team for reviewing apps on the f-droid | |
25 | + | app store, the "Esperanto" team for writing reviews in the Esperanto language, | |
26 | + | and the "Gamebooks" team for reviewing anything related to gamebooks.</p> | |
27 | + | </div> | |
28 | + | </div> | |
29 | + | </div> | |
30 | + | <div class="sect1"> | |
31 | + | <h2 id="_gallery">Gallery</h2> | |
32 | + | <div class="sectionbody"> | |
33 | + | <div class="videoblock"> | |
34 | + | <div class="content"> | |
35 | + | <video src="https://archive.dokk.org/videos/lib.reviews_screencast.mp4" width="20%" controls> | |
36 | + | Your browser does not support the video tag. | |
37 | + | </video> | |
38 | + | </div> | |
39 | + | </div> | |
40 | + | </div> | |
41 | + | </div> | |
42 | + | <div class="sect1"> | |
43 | + | <h2 id="_see_also">See Also</h2> | |
44 | + | <div class="sectionbody"> | |
45 | + | <div class="ulist"> | |
46 | + | <ul> | |
47 | + | <li> | |
48 | + | <p><a href="The_Peers_Community">The Peers Community</a></p> | |
49 | + | </li> | |
50 | + | </ul> | |
51 | + | </div> | |
52 | + | </div> | |
53 | + | </div> | |
54 | + | <div class="sect1"> | |
55 | + | <h2 id="_references">References</h2> | |
56 | + | <div class="sectionbody"> | |
57 | + | <div class="ulist bibliography"> | |
58 | + | <ul class="bibliography"> | |
59 | + | <li> | |
60 | + | <p><a id="cit1"></a>[cit1] <a href="https://lists.gnu.org/archive/html/libreplanet-discuss/2016-05/msg00093.html" class="bare">https://lists.gnu.org/archive/html/libreplanet-discuss/2016-05/msg00093.html</a></p> | |
61 | + | </li> | |
62 | + | <li> | |
63 | + | <p><a id="cit2"></a>[cit2] <a href="https://lib.reviews/static/downloads/dumps" class="bare">https://lib.reviews/static/downloads/dumps</a></p> | |
64 | + | </li> | |
65 | + | <li> | |
66 | + | <p><a id="cit3"></a>[cit3] <a href="https://lib.reviews/teams" class="bare">https://lib.reviews/teams</a></p> | |
67 | + | </li> | |
68 | + | </ul> | |
69 | + | </div> | |
70 | + | </div> | |
71 | + | </div> | |
72 | + | ||
73 | + | {% endblock %} |
index 5041e9e..716b803 | |||
old size: 725B - new size: 2K | |||
@@ -1,7 +1,44 @@ | |||
1 | - | {% extends "base.html" %} | |
1 | + | {% extends "templates/base.tpl" %} | |
2 | 2 | ||
3 | 3 | {% block title %}Library{% endblock %} | |
4 | 4 | ||
5 | + | {% set data = query(""" | |
6 | + | PREFIX library: <dokk:library:> | |
7 | + | PREFIX license: <dokk:license:> | |
8 | + | ||
9 | + | CONSTRUCT { | |
10 | + | ?item library:title ?title; | |
11 | + | library:author ?author ; | |
12 | + | library:license ?license . | |
13 | + | ?license license:id ?license_id ; | |
14 | + | license:name ?license_name . | |
15 | + | } | |
16 | + | WHERE { | |
17 | + | ?item library:title ?title ; | |
18 | + | library:author ?author ; | |
19 | + | library:license ?license . | |
20 | + | ||
21 | + | OPTIONAL { | |
22 | + | ?license license:id ?license_id_optional ; | |
23 | + | license:name ?license_name_optional . | |
24 | + | } | |
25 | + | ||
26 | + | BIND(COALESCE(?license_id_optional, SUBSTR(STR(?license), 14)) AS ?license_id) | |
27 | + | BIND(COALESCE(?license_name_optional, SUBSTR(STR(?license), 14)) AS ?license_name) | |
28 | + | } | |
29 | + | ORDER BY UCASE(?title) | |
30 | + | """, | |
31 | + | { | |
32 | + | '@context': { | |
33 | + | 'library': 'dokk:library:', | |
34 | + | 'license': 'dokk:license:', | |
35 | + | 'library:author': { '@container': '@set' }, | |
36 | + | 'library:license': { '@container': '@set' } | |
37 | + | }, | |
38 | + | 'library:title': {} | |
39 | + | }) | |
40 | + | %} | |
41 | + | ||
5 | 42 | {% block body %} | |
6 | 43 | ||
7 | 44 | <div class="library"> |
index d0f8ec3..01bb8dc | |||
old size: 327B - new size: 543B | |||
@@ -1,4 +1,16 @@ | |||
1 | - | {% extends "base.html" %} | |
1 | + | {% extends "templates/base.tpl" %} | |
2 | + | ||
3 | + | {% set data = query(""" | |
4 | + | PREFIX license: <dokk:license:> | |
5 | + | ||
6 | + | SELECT * | |
7 | + | WHERE { | |
8 | + | ?license license:id ?id ; | |
9 | + | license:name ?name. | |
10 | + | } | |
11 | + | ORDER BY ASC(UCASE(?name)) | |
12 | + | """) | |
13 | + | %} | |
2 | 14 | ||
3 | 15 | {% block title %}Licenses{% endblock %} | |
4 | 16 |
index f5c5fe6..72c9b2a | |||
old size: 637B - new size: 924B | |||
@@ -1,4 +1,18 @@ | |||
1 | - | {% extends "base.html" %} | |
1 | + | {% extends "templates/base.tpl" %} | |
2 | + | ||
3 | + | {% set data = query(""" | |
4 | + | PREFIX mp: <dokk:manpages:> | |
5 | + | ||
6 | + | SELECT DISTINCT ?distribution ?version | |
7 | + | WHERE { | |
8 | + | [] mp:source [ | |
9 | + | mp:distribution_version ?version ; | |
10 | + | mp:distribution_name ?distribution ; | |
11 | + | ] . | |
12 | + | } | |
13 | + | ORDER BY ?distribution ?version | |
14 | + | """) | |
15 | + | %} | |
2 | 16 | ||
3 | 17 | {% block title %}man pages{% endblock %} | |
4 | 18 | ||
@@ -7,7 +21,7 @@ | |||
7 | 21 | <div class="manpages"> | |
8 | 22 | ||
9 | 23 | <div class="path"> | |
10 | - | <a href="{{ url('homepage') }}">DOKK</a> / | |
24 | + | <a href="/">DOKK</a> / | |
11 | 25 | manpages | |
12 | 26 | </div> | |
13 | 27 |
index 04144e8..d8c19b8 | |||
old size: 391B - new size: 689B | |||
@@ -1,4 +1,17 @@ | |||
1 | - | {% extends "base.html" %} | |
1 | + | {% extends "templates/base.tpl" %} | |
2 | + | ||
3 | + | {% set data = query(""" | |
4 | + | PREFIX mimi_eunice: <dokk:mimi_and_eunice:> | |
5 | + | PREFIX xsd: <http://www.w3.org/2001/XMLSchema#> | |
6 | + | ||
7 | + | SELECT ?number ?title | |
8 | + | WHERE { | |
9 | + | ?id mimi_eunice:title ?title . | |
10 | + | BIND (SUBSTR(STR(?id), 22) as ?number) | |
11 | + | } | |
12 | + | ORDER BY ?number | |
13 | + | """) | |
14 | + | %} | |
2 | 15 | ||
3 | 16 | {% block title %}Mimi & Eunice{% endblock %} | |
4 | 17 |
index 0000000..9876ecf | |||
old size: 0B - new size: 908B | |||
new file mode: -rw-r--r-- |
@@ -0,0 +1,30 @@ | |||
1 | + | {% set title = "radio-browser.info" %} | |
2 | + | {% extends "templates/article.tpl" %} | |
3 | + | ||
4 | + | {% block article %} | |
5 | + | ||
6 | + | <div id="preamble"> | |
7 | + | <div class="sectionbody"> | |
8 | + | <div class="paragraph"> | |
9 | + | <p><strong>radio-browser.info</strong> is a website that collects information about Internet | |
10 | + | radio stations. All the data is released in the public domain. As of August, | |
11 | + | 2018 the database contains more than 20,000 radio stations and is integrated | |
12 | + | into more than 20 projects, including RadioDroid, <a href="InternetRadio_(app)">InternetRadio</a>, | |
13 | + | and NextCloud<sup><a href="#cit1">[cit1]</a></sup>.</p> | |
14 | + | </div> | |
15 | + | </div> | |
16 | + | </div> | |
17 | + | <div class="sect1"> | |
18 | + | <h2 id="_references">References</h2> | |
19 | + | <div class="sectionbody"> | |
20 | + | <div class="ulist bibliography"> | |
21 | + | <ul class="bibliography"> | |
22 | + | <li> | |
23 | + | <p><a id="cit1"></a>[cit1] <a href="https://www.radio-browser.info" class="bare">https://www.radio-browser.info</a></p> | |
24 | + | </li> | |
25 | + | </ul> | |
26 | + | </div> | |
27 | + | </div> | |
28 | + | </div> | |
29 | + | ||
30 | + | {% endblock %} |
index 220af04..cba9e2a | |||
old size: 482B - new size: 372B | |||
@@ -1,6 +1,6 @@ | |||
1 | - | {% extends "base.html" %} | |
1 | + | {% extends "templates/base.tpl" %} | |
2 | 2 | ||
3 | - | {% block title %}{{ data["a:title"] }}{% endblock %} | |
3 | + | {% block title %}{{ title }}{% endblock %} | |
4 | 4 | {% block stylesheets %} | |
5 | 5 | <link href="/static/css/asciidoctor.css" rel="stylesheet"> | |
6 | 6 | {% endblock %} | |
@@ -10,14 +10,12 @@ | |||
10 | 10 | <div class="articles"> | |
11 | 11 | ||
12 | 12 | <div class="path"> | |
13 | - | <a href="{{ url('homepage') }}">DOKK</a> / | |
14 | - | <a href="{{ url('articles') }}">articles</a> / | |
15 | - | {{ data["a:title"] }} | |
13 | + | <a href="/">DOKK</a> | |
16 | 14 | </div> | |
17 | 15 | ||
18 | - | <h1>{{ data["a:title"] }}</h1> | |
16 | + | <h1>{{ title }}</h1> | |
19 | 17 | ||
20 | - | {{ data["a:html"]|safe }} | |
18 | + | {% block article %}{% endblock %} | |
21 | 19 | ||
22 | 20 | </div> | |
23 | 21 |
index 7d2e94d..33ef12f | |||
old size: 443B - new size: 452B | |||
@@ -1,4 +1,8 @@ | |||
1 | - | {% extends "base.html" %} | |
1 | + | {# This is an old page that listed articles and should be removed | |
2 | + | because unused | |
3 | + | #} | |
4 | + | ||
5 | + | {% extends "templates/base.tpl" %} | |
2 | 6 | ||
3 | 7 | {% block title %}Articles{% endblock %} | |
4 | 8 | ||
@@ -11,9 +15,9 @@ | |||
11 | 15 | articles | |
12 | 16 | </div> | |
13 | 17 | ||
14 | - | {% for article in data["results"]["bindings"] %} | |
18 | + | {% for page in pages %} | |
15 | 19 | <p> | |
16 | - | <a href="{{ url('article', id=article['iri']['value'][14:]) }}">{{ article['title']['value'] }}</a> | |
20 | + | <a href="/{{ page }}">{{ page }}</a> | |
17 | 21 | </p> | |
18 | 22 | {% endfor %} | |
19 | 23 | </div> |
index 84dc0eb..fe0f782 | |||
old size: 390B - new size: 517B | |||
@@ -1,3 +1,7 @@ | |||
1 | + | {# This is the "base" HTML that every other page is supposed to extend. It contains | |
2 | + | the basic HTML structure of a page. | |
3 | + | #} | |
4 | + | ||
1 | 5 | <!DOCTYPE html> | |
2 | 6 | <html lang="en"> | |
3 | 7 | <head> |
index 6e83ed6..6fe7f13 | |||
old size: 936B - new size: 2K | |||
@@ -1,4 +1,45 @@ | |||
1 | - | {% extends "base.html" %} | |
1 | + | {% extends "templates/base.tpl" %} | |
2 | + | ||
3 | + | {% set data = query(""" | |
4 | + | PREFIX library: <dokk:library:> | |
5 | + | PREFIX license: <dokk:license:> | |
6 | + | ||
7 | + | CONSTRUCT { | |
8 | + | ?item library:title ?title ; | |
9 | + | library:author ?author ; | |
10 | + | library:license ?license . | |
11 | + | ||
12 | + | ?license license:id ?license_id ; | |
13 | + | license:name ?license_name . | |
14 | + | } | |
15 | + | WHERE { | |
16 | + | ?item | |
17 | + | library:title ?title ; | |
18 | + | library:author ?author ; | |
19 | + | library:license ?license . | |
20 | + | ||
21 | + | FILTER (?item = <dokk:library:""" + item_id + """>) | |
22 | + | ||
23 | + | OPTIONAL { | |
24 | + | ?license license:id ?license_id_optional ; | |
25 | + | license:name ?license_name_optional . | |
26 | + | } | |
27 | + | ||
28 | + | BIND(COALESCE(?license_id_optional, SUBSTR(STR(?license), 14)) AS ?license_id) | |
29 | + | BIND(COALESCE(?license_name_optional, SUBSTR(STR(?license), 14)) AS ?license_name) | |
30 | + | } | |
31 | + | """, | |
32 | + | { | |
33 | + | "@context": { | |
34 | + | "library": "dokk:library:", | |
35 | + | "license": "dokk:license:", | |
36 | + | "library:author": { "@container": "@set" }, | |
37 | + | "library:license": { "@container": "@set" } | |
38 | + | }, | |
39 | + | "library:title": {} | |
40 | + | } | |
41 | + | )["@graph"][0] | |
42 | + | %} | |
2 | 43 | ||
3 | 44 | {% block title %}{{ data['library:title'] }}{% endblock %} | |
4 | 45 | ||
@@ -6,7 +47,7 @@ | |||
6 | 47 | ||
7 | 48 | <div class="library_item"> | |
8 | 49 | <div class="header"> | |
9 | - | <a href="{{ url('library') }}">DOKK Library</a> | |
50 | + | <a href="/library">DOKK Library</a> | |
10 | 51 | </div> | |
11 | 52 | ||
12 | 53 | <div> |
index 915978d..228e9d2 | |||
old size: 361B - new size: 488B | |||
@@ -1,4 +1,11 @@ | |||
1 | - | {% extends "base.html" %} | |
1 | + | {% extends "templates/base.tpl" %} | |
2 | + | ||
3 | + | {% set data = query(""" | |
4 | + | PREFIX license: <dokk:license:> | |
5 | + | ||
6 | + | DESCRIBE license:""" + license_id + """ | |
7 | + | """) | |
8 | + | %} | |
2 | 9 | ||
3 | 10 | {% block title %}{{ data['license:name'] }}{% endblock %} | |
4 | 11 |
index 5dfde0b..5c046ff | |||
old size: 964B - new size: 929B | |||
@@ -1,4 +1,4 @@ | |||
1 | - | {% extends "base.html" %} | |
1 | + | {% extends "templates/base.tpl" %} | |
2 | 2 | ||
3 | 3 | {% block title %}Man pages named {{ name }} in section {{ section }}{% endblock %} | |
4 | 4 | ||
@@ -7,8 +7,8 @@ | |||
7 | 7 | <div class="manpages"> | |
8 | 8 | ||
9 | 9 | <div class="path"> | |
10 | - | <a href="{{ url('homepage') }}">DOKK</a> / | |
11 | - | <a href="{{ url('manpages') }}">manpages</a> | |
10 | + | <a href="/">DOKK</a> / | |
11 | + | <a href="/manpages">manpages</a> | |
12 | 12 | </div> | |
13 | 13 | ||
14 | 14 | <p> | |
@@ -20,7 +20,7 @@ | |||
20 | 20 | {% for page in data["@graph"] %} | |
21 | 21 | <tr> | |
22 | 22 | <td> | |
23 | - | <a href="{{ url('manpages') }}/{{ page['@id'][3:] }}"> | |
23 | + | <a href="/manpages/{{ page['@id'][3:] }}"> | |
24 | 24 | {{ page['mp:source']['mp:filename'] }} | |
25 | 25 | </a> | |
26 | 26 | </td> |
index 61bd30e..a5c36df | |||
old size: 647B - new size: 624B | |||
@@ -1,4 +1,4 @@ | |||
1 | - | {% extends "base.html" %} | |
1 | + | {% extends "templates/base.tpl" %} | |
2 | 2 | ||
3 | 3 | {% block title %}{{ distribution }} {{ version }} man pages{% endblock %} | |
4 | 4 | ||
@@ -7,8 +7,8 @@ | |||
7 | 7 | <div class="manpages"> | |
8 | 8 | ||
9 | 9 | <div class="path"> | |
10 | - | <a href="{{ url('homepage') }}">DOKK</a> / | |
11 | - | <a href="{{ url('manpages') }}">manpages</a> / | |
10 | + | <a href="/">DOKK</a> / | |
11 | + | <a href="/manpages">manpages</a> / | |
12 | 12 | {{ distribution }} {{ version }} | |
13 | 13 | </div> | |
14 | 14 |
index 3545d06..cbbff47 | |||
old size: 777B - new size: 754B | |||
@@ -1,4 +1,4 @@ | |||
1 | - | {% extends "base.html" %} | |
1 | + | {% extends "templates/base.tpl" %} | |
2 | 2 | ||
3 | 3 | {% block title %}{{ data['mp:name'] }}({{ data['mp:section'] }}){% endblock %} | |
4 | 4 | {% block stylesheets %} | |
@@ -10,8 +10,8 @@ | |||
10 | 10 | <div class="manpages"> | |
11 | 11 | ||
12 | 12 | <div class="path"> | |
13 | - | <a href="{{ url('homepage') }}">DOKK</a> / | |
14 | - | <a href="{{ url('manpages') }}">manpages</a> / | |
13 | + | <a href="/">DOKK</a> / | |
14 | + | <a href="/manpages">manpages</a> / | |
15 | 15 | <a href="{{ url('manpages_distribution', distribution=distribution, version=version) }}">{{ distribution }} {{ version }}</a> / | |
16 | 16 | <a href="{{ url('manpages_package', distribution=distribution, version=version, package=package) }}">{{ package }}</a> / | |
17 | 17 | {{ data["mp:source"]["mp:filename"] }} |
index 1dc761d..1988e36 | |||
old size: 711B - new size: 688B | |||
@@ -1,4 +1,4 @@ | |||
1 | - | {% extends "base.html" %} | |
1 | + | {% extends "templates/base.tpl" %} | |
2 | 2 | ||
3 | 3 | {% block title %}{{ package }} ({{ distribution }} {{ version }}) man pages{% endblock %} | |
4 | 4 | ||
@@ -7,8 +7,8 @@ | |||
7 | 7 | <div class="manpages"> | |
8 | 8 | ||
9 | 9 | <div class="path"> | |
10 | - | <a href="{{ url('homepage') }}">DOKK</a> / | |
11 | - | <a href="{{ url('manpages') }}">manpages</a> / | |
10 | + | <a href="/">DOKK</a> / | |
11 | + | <a href="/manpages">manpages</a> / | |
12 | 12 | <a href="{{ url('manpages_distribution', distribution=distribution, version=version) }}">{{ distribution }} {{ version }}</a> / | |
13 | 13 | {{ package }} | |
14 | 14 | </div> |
index 7aeccd0..ce8d9c9 | |||
old size: 1005B - new size: 1014B | |||
@@ -1,4 +1,4 @@ | |||
1 | - | {% extends "base.html" %} | |
1 | + | {% extends "templates/base.tpl" %} | |
2 | 2 | ||
3 | 3 | {% block title %}Mimi&Eunice {{ data['@id'][12:] }}: {{ data['mimi_eunice:title'] }}{% endblock %} | |
4 | 4 |
index 0000000..4acd30a | |||
old size: 0B - new size: 1005B | |||
new file mode: -rw-r--r-- |
@@ -0,0 +1,31 @@ | |||
1 | + | {% set title = "Virtual Hosting platform For Free Software" %} | |
2 | + | {% extends "templates/article.tpl" %} | |
3 | + | ||
4 | + | {% block article %} | |
5 | + | ||
6 | + | <div id="preamble"> | |
7 | + | <div class="sectionbody"> | |
8 | + | <div class="paragraph"> | |
9 | + | <p><strong>Virtual Hosting platform For Free Software</strong>, or <strong>VHFFS</strong>, is a free software | |
10 | + | platform developed by <a href="TuxFamily">TuxFamily</a> for managing the organization’s | |
11 | + | servers and users services. It provides a web interface for users to request | |
12 | + | services, and a moderation system for administrators to accept or refuse | |
13 | + | services creation. The project was started in 1999 by the TuxFamily | |
14 | + | administrator team<sup><a href="#cit1">[cit1]</a></sup>.</p> | |
15 | + | </div> | |
16 | + | </div> | |
17 | + | </div> | |
18 | + | <div class="sect1"> | |
19 | + | <h2 id="_references">References</h2> | |
20 | + | <div class="sectionbody"> | |
21 | + | <div class="ulist bibliography"> | |
22 | + | <ul class="bibliography"> | |
23 | + | <li> | |
24 | + | <p><a id="cit1"></a>[cit1] <a href="https://vhffs.org/overview" class="bare">https://vhffs.org/overview</a></p> | |
25 | + | </li> | |
26 | + | </ul> | |
27 | + | </div> | |
28 | + | </div> | |
29 | + | </div> | |
30 | + | ||
31 | + | {% endblock %} |