Compare commits

...

No commits in common. "5c13a3c98d0e2673a5ad18ea04311ff06b782153" and "2fb6fb6d5d5044eab4e3a49ee44e319c1ee1d8a4" have entirely different histories.

65 changed files with 766 additions and 3094 deletions

View file

@ -4,6 +4,4 @@ https://pages.sandpoints.org/sandpoints/simplesandpoints-de47f813/_preview/
https://pages.sandpoints.org/sandpoints/simplesandpoints-de47f813/
A spectre is haunting Europe — the spectre of communism. All the powers of old Europe have entered into a holy alliance to exorcise this spectre: Pope and Tsar, Metternich and Guizot, French Radicals and German police-spies.
Where is the party in opposition that has not been decried as communistic by its opponents in power? Where is the opposition that has not hurled back the branding reproach of communism, against the more advanced opposition parties, as well as against its reactionary adversaries?

View file

@ -1,22 +0,0 @@
{
"name": "svelte-app",
"version": "1.0.0",
"scripts": {
"build": "rollup -c",
"dev": "rollup -c -w",
"start": "sirv public"
},
"devDependencies": {
"@rollup/plugin-commonjs": "^17.0.0",
"@rollup/plugin-node-resolve": "^11.0.0",
"rollup": "^2.3.4",
"rollup-plugin-css-only": "^3.1.0",
"rollup-plugin-livereload": "^2.0.0",
"rollup-plugin-svelte": "^7.0.0",
"rollup-plugin-terser": "^7.0.0",
"svelte": "^3.0.0"
},
"dependencies": {
"sirv-cli": "^1.0.0"
}
}

View file

@ -1,260 +0,0 @@
html, body {
position: relative;
width: 100%;
height: 100%;
}
body {
color: #333;
margin: 0;
padding: 8px;
box-sizing: border-box;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
}
a {
color: rgb(0,100,200);
text-decoration: none;
}
a:hover {
text-decoration: underline;
}
a:visited {
color: rgb(0,80,160);
}
input, button, select, textarea {
font-family: inherit;
font-size: inherit;
-webkit-padding: 0.4em 0;
padding: 0.4em;
margin: 0 0 0.5em 0;
box-sizing: border-box;
border: 1px solid #ccc;
border-radius: 2px;
}
input:disabled {
color: #ccc;
}
button {
color: #333;
background-color: #f4f4f463;
outline: none;
padding: 0.1rem 0.1rem;
margin-left: 0.3rem;
}
button:disabled {
color: #999;
}
button:disabled:hover {
cursor: default;
}
button:not(:disabled):active {
background-color: #ddd;
}
button:focus {
border-color: #666;
}
button:hover, .newtierbutton:hover {
cursor: pointer;
}
/* custom part */
.newtierbutton {
color: #000;
background-color: #dddddd;
padding: 0.2em 0.4em;
grid-column: 2/3;
margin-right: 0.2rem;
}
.formgrid {
display: grid;
grid-template-columns: auto 1fr;
grid-gap: 1rem;
margin-top: 1rem;
}
#sandpoints {
width: 80%;
margin-left: 1rem;
margin-top: 1rem;
}
label, .filepath {
grid-column: 1/2;
text-transform: capitalize;
align-self: center
}
.labelcontent {
align-self: auto;
}
.labeloffline {
margin-top: -0.4rem;
}
input[readonly] {
color: #000000b3;
background: #00000012;
border: 0px;
}
input, button, textarea, .selecttier, .relpath {
grid-column: 2/3;
}
textarea {
height: 10rem;
}
.hasinput {
line-height: 0.2rem;
border: 0px;
padding: 0px;
margin: 0px;
font-weight: bold;
}
.hasinput:focus {
outline: none;
}
.tierline {
display: flex;
align-items: baseline;
}
.tiertitle {
font-style: italic;
}
.buttons {
display: flex;
margin-left: auto;
padding-left: 0.2rem;
}
select {
align-self: start;
border: 0;
padding: 0.1rem;
}
.selecttier {
margin-top: 0.5rem;
}
.buttons button {
border: solid #999 1px;
padding: 0;
padding-left: 0.1rem;
padding-right: 0.1rem;
margin: 1px;
}
.filepath {
font-size: large;
font-style: italic;
margin-bottom: 1rem;
}
.relpath {
font-size: large;
font-weight: bold;
}
.tierbox, #selecthas {
margin-top: 0.5rem;
}
.fmHidden {
display: none;
}
.fmShown {
display: block;
}
.fmMetaTitle {
margin-bottom: 0.3rem;
text-transform: capitalize;
display: block;
text-align: right;
font-size: smaller;
padding-top: 0.2rem;
}
.fmMeta {
border-bottom: 2px #0000001a solid;
border-right: 1px #0000001a solid;
padding-bottom: 1rem;
margin-bottom: 0.5rem;
background: #ffffff1c;
padding-right: 0.2rem;
}
.fmItem {
display: grid;
grid-template-columns: auto 1fr;
grid-gap: 1rem;
}
.fmCollapse, .fmExpand {
padding-top: 0.2rem;
margin-top: 0.5rem;
padding-bottom: 0.5rem;
}
.fmExpand:hover, .fmCollapse:hover {
cursor: pointer;
}
.fmCollapse::before {
margin-right: 0.3rem;
content: "⇲";
}
.fmExpand::before {
margin-right: 0.3rem;
content: "⇱";
}
#fmicon, #frontmatter, input.hasinput {
background-color: #ffccbc;
padding-right: 0.3rem;
padding-left: 0.3rem;
padding-bottom: 0.3rem;
}
.newtiers {
display: none;
}
#newtierstitle {
margin-right: 0.4rem;
display: block;
}
.newtiersbar {
padding-bottom: 0.4rem;
padding-top: 0.4rem;
margin-left: auto;
display: flex;
border-bottom: 2px #0000001a solid;
border-right: 1px #0000001a solid;
justify-content: flex-end;
align-items: center;
background: #00000008;
}

View file

@ -1,16 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset='utf-8'>
<meta name='viewport' content='width=device-width,initial-scale=1'>
<title>Sandpoints Edit Page</title>
<link rel='stylesheet' href='global.css'>
<script defer src='../metadata/index.js'></script>
<script defer src='build/bundle.js'></script>
</head>
<body>
</body>
</html>

View file

@ -5,9 +5,9 @@ module.exports = {
require('postcss-import')({
path: [themeDir]
}),
/* require('autoprefixer')({
* grid: true
* }),
* require('postcss-reporter'), */
require('autoprefixer')({
grid: true
}),
require('postcss-reporter'),
]
}

View file

@ -477,11 +477,8 @@ ol li {
list-style-type: decimal;
}
img, video {
max-width: 100%;
display: block;
margin-left: auto;
margin-right: auto;
img {
width: 100%;
}
.supt {
@ -595,7 +592,6 @@ img, video {
.hasauthors {
font-size: 1.6rem !important;
display: flex;
}
.hassup {
@ -673,7 +669,7 @@ h6 {
padding-top: 1.2rem;
padding-bottom: 1.2rem;
background-color: rgba(0, 0, 0, 0.05);
max-width: 45ch;
max-width: 70ch;
}
.authors {
@ -840,7 +836,7 @@ details {
/* .glossline {
border-bottom: lightgray solid 1px;
border-top: lightgray solid 1px;
} */
} */
.glosswords {
display: inline-block;
@ -880,11 +876,6 @@ details {
background-color: #fff9f9;
}
.svedit {
display: none;
margin-left: 0.5rem;
}
@media (max-width: 767px) {
html {
box-sizing: border-box;

View file

@ -54,48 +54,7 @@ window.addEventListener("scroll", function (e) {
}
});
function editPage(repoJsId) {
let relPath = "../".repeat(relPathDepth - 1);
var el = document.createElement('script');
el.onload = ()=> {
console.log("loading...")
console.log(repo)
}
el.src = `${relPath}js/repo/${repoJsId}.js`
document.body.appendChild(el)
document.location.href = `${relPath}edit/index.html?edit=${repoJsId}`
ev}
window.addEventListener("keyup", (e)=> {
if (e.key == "e" && location.protocol == "file:") {
editPage(sandpointsPageId)
} else if (e.key == "E" && location.protocol == "file:") {
let preview = document.querySelector("#preview");
if (preview.style.display == "flex") {
preview.style.display = "none";
} else {
preview.style.display = "flex";
}
console.log("preview: ", preview);
}
})
window.addEventListener("DOMContentLoaded", (e) => {
if (location.protocol == "file:") {
document.querySelectorAll(".svedit").forEach((i) => {
i.style.display = "inline";
})
}
document.querySelectorAll('.triadlink').forEach((i) => {
i.addEventListener("click", (ev) => {
if (ev.ctrlKey) {
ev.preventDefault()
editPage(ev.target.getAttribute("repoid"))
}
})
})
let preview = document.querySelector("#preview");
if (
location.pathname.split("/").includes("_preview") ||
@ -107,7 +66,6 @@ window.addEventListener("DOMContentLoaded", (e) => {
let par = document.querySelector(
"#TableOfContents > ol:first-child > li:first-child"
);
if (par) {
let s = document.createElement("span");
s.appendChild(par.cloneNode(true));
par.remove();
@ -117,7 +75,6 @@ window.addEventListener("DOMContentLoaded", (e) => {
s,
document.querySelector("#TableOfContents > ol:first-child").firstChild
);
}
if (document.querySelector(".soundcite")) {
let relPath = "../".repeat(relPathDepth - 1);

View file

@ -1,45 +1,15 @@
{
"annex": "annexes",
"article": "articles",
"atlas": "atlases",
"author": "authors",
"book": "books",
"cabin": "cabins",
"chapter": "chapters",
"compartment": "compartments",
"contributor": "contributors",
"curriculum": "curriculums",
"deck": "decks",
"document": "documents",
"editor": "editors",
"entry": "entries",
"experiment": "experiments",
"floor": "floors",
"fragment": "fragments",
"glossary": "glossaries",
"highlight": "highlights",
"house": "houses",
"issue": "issues",
"journal": "journals",
"logbook": "logbooks",
"map": "maps",
"note": "notes",
"notebook": "notebooks",
"part": "parts",
"pin": "pins",
"record": "records",
"reflection": "reflections",
"room": "rooms",
"scribe": "scribes",
"section": "sections",
"series": "series",
"session": "sessions",
"ship": "ships",
"spectre": "spectres",
"syllabus": "syllabi",
"tab": "tabs",
"term":"terms",
"curriculum": "curriculums",
"book": "books",
"journal": "journals",
"topic": "topics",
"toponym": "toponyms",
"voice": "voices"
"part": "parts",
"issue": "issues",
"experiment": "experiments",
"session": "sessions",
"chapter": "chapters",
"article": "articles",
"annex": "annexes",
"author": "authors"
}

View file

@ -1 +1 @@
<h{{ add 1 .Level }} id="{{ .Anchor | safeURL }}" class="hx css-{{ .Page.File.UniqueID }}-h{{ add 1 .Level }}">{{ .Text | safeHTML }}<a class="hpar" href="#{{ .Anchor | safeURL }}"></a></h{{ add 1 .Level }}>
<h{{ add 1 .Level }} id="{{ .Anchor | safeURL }}" class="hx">{{ .Text | safeHTML }}<a class="hpar" href="#{{ .Anchor | safeURL }}"></a></h{{ add 1 .Level }}>

View file

@ -5,17 +5,7 @@
{{ $_.Add "triads" $k }}
{{- end -}}
{{- if strings.HasPrefix .Destination "img:" -}}
{{- $img_params := (substr .Destination 4) -}}
{{- $img_src := index (split $img_params " ") 0 -}}
{{- $img_attr := index (split $img_params $img_src) 1 -}}
<img class="sandpoints-img" src="{{ $img_src }}" {{ $img_attr | safeHTMLAttr }} />
{{- else if strings.HasPrefix .Destination "vid:" -}}
{{- $vid_params := (substr .Destination 4) -}}
{{- $vid_src := index (split $vid_params " ") 0 -}}
{{- $vid_attr := index (split $vid_params $vid_src) 1 -}}
<video class="sandpoints-vid" controls src="{{ $vid_src }}" {{ $vid_attr | safeHTMLAttr }}></video>
{{- else if strings.HasPrefix .Destination "bib:" -}}
{{- if strings.HasPrefix .Destination "bib:" -}}
{{- $destination := (substr .Destination 4) -}}
{{- $c_prefix := .Page.Site.Params.sandpointsCatalogPrefix | default "/library/" -}}
{{- if index $.Page.Site.Data.books.catalog $destination -}}
@ -27,21 +17,21 @@
{{ end }}
{{ .Page.Scratch.Add "bibs" (slice (slice $bibhref $bibtitle)) }}
{{- if not $text_link -}}
<span>{{- delimit $b.authors ", " " & " -}}{{- with $b.pubdate -}},&nbsp;{{- substr . 0 4}}{{- end -}}.&nbsp;<a href="{{- $c_prefix | safeURL -}}BROWSE_LIBRARY.html#/book/{{- $destination -}}"{{- with $b.title}} title="{{- . -}}"{{- end -}} target="_blank"><span class="sup">bib</span><i>{{- $b.title -}}</i></a>.&nbsp;{{- with $b.publisher -}}{{- . -}}.{{- end -}}</span>
<span>{{- delimit $b.authors ", " " & " -}}{{- with $b.pubdate -}}, {{- substr . 0 4}}{{- end -}}.<a href="{{- $c_prefix | safeURL -}}BROWSE_LIBRARY.html#/book/{{- $destination -}}"{{- with $b.title}} title="{{- . -}}"{{- end -}} target="_blank"><span class="sup">bib</span><i>{{- $b.title -}}</i></a>. {{- with $b.publisher -}}{{- . -}}.{{- end -}}</span>
{{- else -}}
<span class="sup">bib</span><a href="{{- $c_prefix | safeURL -}}BROWSE_LIBRARY.html#/book/{{- $destination -}}"{{- with $b.title}} title="{{- . -}}"{{- end -}} target="_blank">{{- $text_link -}}</a>
<a href="{{- $c_prefix | safeURL -}}BROWSE_LIBRARY.html#/book/{{- $destination -}}"{{- with $b.title}} title="{{- . -}}"{{- end -}} target="_blank">{{- $text_link -}}</a>
{{- end -}}
{{- else -}}
<a href="{{- $c_prefix | safeURL -}}BROWSE_LIBRARY.html#/book/{{- $destination -}}"{{- with .Title}} title="{{- . -}}"{{- end -}}>{{- $text_link -}}⦚<span>bib:{{- $destination -}} not found</span></a>
<a href="{{- $c_prefix | safeURL -}}BROWSE_LIBRARY.html#/book/{{- $destination -}}"{{- with .Title}} title="{{- . -}}"{{- end -}}>{{- $text_link -}}⦚<span class="text-xs font-bold p-1 bg-AuChico text-CoconutCream">bib:{{- $destination -}} not found</span></a>
{{- end -}}
{{- else if in ($_.Get "triads") (index (split .Destination ":") 0) -}}
{{- if $.Page.Site.GetPage (printf "/%s" (replace .Destination ":" "/")) -}}
{{- $session := $.Page.Site.GetPage (printf "/%s" (replace .Destination ":" "/")) -}}
{{ .Page.Scratch.Add "links" (slice $session) }}
{{- if not $text_link -}}
<a class="triadlink" repoid="{{- $session.File.UniqueID -}}" printhref="#ph-{{- $session.File.UniqueID -}}" href="{{- $session.RelPermalink -}}{{- if eq hugo.Environment "offline" -}}index.html{{- end -}}"{{- with $session.Title}} title="{{- $session.Title -}}"{{- end -}}><span class="sup">{{- index (split .Destination ":") 0 -}}</span>{{- $session.Title -}}</a>
<a href="{{- $session.RelPermalink -}}{{- if eq hugo.Environment "offline" -}}index.html{{- end -}}"{{- with $session.Title}} title="{{- $session.Title -}}"{{- end -}}><span class="sup">{{- index (split .Destination ":") 0 -}}</span>{{- $session.Title -}}</a>
{{- else -}}
<a class="triadlink" repoid="{{- $session.File.UniqueID -}}" printhref="#ph-{{- $session.File.UniqueID -}}" href="{{- $session.RelPermalink -}}{{- if eq hugo.Environment "offline" -}}index.html{{- end -}}"{{- with .Title}} title="{{- . -}}"{{- end -}}><span class="sup">{{- index (split .Destination ":") 0 -}}</span>{{- $text_link -}}</a>
<a href="{{- $session.RelPermalink -}}{{- if eq hugo.Environment "offline" -}}index.html{{- end -}}"{{- with .Title}} title="{{- . -}}"{{- end -}}><span class="sup">{{- index (split .Destination ":") 0 -}}</span>{{- $text_link -}}</a>
{{- end -}}
{{- else -}}
<a href="{{- .Destination -}}/{{- if eq hugo.Environment "offline" -}}index.html{{- end -}}">{{- $text_link -}}⦚<span>{{- .Destination -}} not found</span></a>

View file

@ -2,12 +2,12 @@
<html lang="{{ with .Site.LanguageCode }}{{ . }}{{ else }}en-us{{ end }}">
<head>
{{- partial "head.html" . -}}
{{- partialCached "head.html" . -}}
<title>{{- .Title }} - {{ .Site.Title -}}</title>
{{- partialCached "sandpointjs.html" . .RelPermalink -}}
</head>
<body>
{{- block "singlebody" . }}{{- end -}}
{{- block "singlebody" . }}{{- end }}
{{- partialCached "footer.html" . -}}
</body>
</html>

View file

@ -6,23 +6,20 @@
{{ $currentDir = .Dir }}
{{ end }}
{{ $currentFile := (printf "/%s" .File) }}
{{ $editFile := $.Site.GetPage "/edit" }}
{{ $editFilePath := $editFile.RelPermalink }}
<div class="coretitle"><span class="supt">Sitemap{{ substr $.Site.Title 0 1 }}</span>{{ substr $.Site.Title 1 }} {{with $currentDir}}({{ . }}){{ end }}</div>
<div class="coretitle"><span class="supt">Sitemap{{ substr $.Site.Title 0 1 }}</span>{{ substr $.Site.Title 1 }} ({{ $currentDir }})</div>
{{ $s := partialCached "scratch.html" . }}
{{ $noTriad := (slice) }}
{{ range $p := .Site.RegularPages }}
{{ $scratch := $s.Get (printf "/%s" $p.File) }}
{{ if eq $scratch.depth "core" }}
<div class="sitemap" ><div class="{{ with $p.File }}{{ if eq $currentDir .Dir }}highline{{ end }}{{ end }}"><a href="{{- $p.RelPermalink -}}{{- if eq hugo.Environment "offline" -}}index.html{{- end -}}"{{- with $p.Title}} title="{{- $p.Title -}}"{{- end -}}><span class="sup">{{- substr $p.File.Dir 0 -1 -}}</span>{{- $p.Title -}}</a><a class="svedit" href="{{- printf "%sindex.html#%s" $editFilePath $p.File.UniqueID -}}">[EDIT]</a></div>
<div class="sitemap" ><div class="{{ with $p.File }}{{ if eq $currentDir .Dir }}highline{{ end }}{{ end }}"><a href="{{- $p.RelPermalink -}}{{- if eq hugo.Environment "offline" -}}index.html{{- end -}}"{{- with $p.Title}} title="{{- $p.Title -}}"{{- end -}}><span class="sup">{{- substr $p.File.Dir 0 -1 -}}</span>{{- $p.Title -}}</a></div>
{{ range $coreKid := $scratch.has_children }}
<div class="sitemap"><a href="{{- $coreKid.RelPermalink -}}{{- if eq hugo.Environment "offline" -}}index.html{{- end -}}"{{- with $coreKid.Title}} title="{{- $coreKid.Title -}}"{{- end -}}><div class="{{ with $coreKid.File }}{{ if eq $currentDir .Dir }}highline{{ end }}{{ end }}"><span class="sup">{{- substr $coreKid.File.Dir 0 -1 -}}</span>{{- $coreKid.Title -}}</a><a class="svedit" href="{{- printf "%sindex.html#%s" $editFilePath $coreKid.File.UniqueID -}}">[EDIT]</a></div>
<div class="sitemap"><a href="{{- $coreKid.RelPermalink -}}{{- if eq hugo.Environment "offline" -}}index.html{{- end -}}"{{- with $coreKid.Title}} title="{{- $coreKid.Title -}}"{{- end -}}><div class="{{ with $coreKid.File }}{{ if eq $currentDir .Dir }}highline{{ end }}{{ end }}"><span class="sup">{{- substr $coreKid.File.Dir 0 -1 -}}</span>{{- $coreKid.Title -}}</a></div>
{{ $scratchCKid := $s.Get (printf "/%s" $coreKid.File) }}
{{ range $mantleKid := $scratchCKid.has_children }}
<div class="sitemap"><div class="{{ with $mantleKid.File }}{{ if eq $currentDir .Dir }} highline{{ end }}{{ end }}"><a href="{{- $mantleKid.RelPermalink -}}{{- if eq hugo.Environment "offline" -}}index.html{{- end -}}"{{- with $mantleKid.Title}} title="{{- $mantleKid.Title -}}"{{- end -}}><span class="sup">{{ with $mantleKid.File }}{{substr .Dir 0 -1 -}}{{ end }}</span>{{- $mantleKid.Title -}}</a><a class="svedit" href="{{- printf "%sindex.html#%s" $editFilePath $mantleKid.File.UniqueID -}}">[EDIT]</a></div></div>
<div class="sitemap"><div class="{{ with $mantleKid.File }}{{ if eq $currentDir .Dir }} highline{{ end }}{{ end }}"><a href="{{- $mantleKid.RelPermalink -}}{{- if eq hugo.Environment "offline" -}}index.html{{- end -}}"{{- with $mantleKid.Title}} title="{{- $mantleKid.Title -}}"{{- end -}}><span class="sup">{{ with $mantleKid.File }}{{substr .Dir 0 -1 -}}{{ end }}</span>{{- $mantleKid.Title -}}</a></div></div>
{{ end }}
</div>
{{ end }}
@ -33,6 +30,6 @@
{{ end }}
{{ end }}
{{ range $noTriad }}
<div class="sitemap {{ with .File }}{{ if eq $currentDir .Dir }} highline{{ end }}{{ end }}"><a href="{{- .RelPermalink -}}{{- if eq hugo.Environment "offline" -}}index.html{{- end -}}"{{- with .Title }} title="{{- . -}}"{{- end -}}><span class="sup">{{- substr .File.Dir 0 -1 -}}</span>{{- .Title -}}</a>{{ if not (or (hasPrefix .File.Dir "edit") (hasPrefix .File.Dir "print")) }}<a class="svedit" href="{{- printf "%sindex.html#%s" $editFilePath .File.UniqueID -}}">[EDIT]</a>{{ end }}</div>
<div class="sitemap {{ with .File }}{{ if eq $currentDir .Dir }} highline{{ end }}{{ end }}"><a href="{{- .RelPermalink -}}{{- if eq hugo.Environment "offline" -}}index.html{{- end -}}"{{- with .Title }} title="{{- . -}}"{{- end -}}><span class="sup">{{- substr .File.Dir 0 -1 -}}</span>{{- .Title -}}</a></div>
{{ end }}
{{ end }}

View file

@ -1,14 +0,0 @@
<!DOCTYPE html>
<html lang="{{ with .Site.LanguageCode }}{{ . }}{{ else }}en-us{{ end }}">
<head>
<meta charset='utf-8'>
<meta name='viewport' content='width=device-width,initial-scale=1'>
<link rel='stylesheet' href='build/global.css'>
<!-- <link rel='stylesheet' href='build/bundle.css'> -->
<script defer src='../metadata/index.js'></script>
<script defer src='build/bundle.js'></script>
<title>edit{{- .Site.Title -}}</title>
</head>
<body>{{- block "main" . -}}{{- end -}}</body>
</html>

View file

@ -1,2 +0,0 @@
{{ define "main" }}
{{ end }}

View file

@ -1 +0,0 @@
{{- define "main" -}}{{- end -}}

View file

@ -1,20 +1 @@
{{- define "main" -}}
{{ $sections := (slice) }}
{{ $tiers := (slice) }}
{{ range $.Site.Sections }}
{{ with .File }}
{{ $sections = $sections | append (strings.TrimSuffix "/" .Dir) }}
{{ end }}
{{ end }}
{{ $metasp := (dict) }}
{{ range $k, $v := $.Site.Data.sandpointsnamegraph }}
{{ if in $sections $k }}
{{ $tiers = (slice) }}
{{ range where $.Site.RegularPages "Section" $k }}
{{ $tiers = $tiers | append (merge (dict "file" .File.LogicalName) (dict "title" .Title)) }}
{{ end }}
{{ $metasp = merge $metasp (dict $v (merge (dict "singular" $k) (dict "tiers" $tiers))) }}
{{ end }}
{{ end }}
{{ printf "METASP=%s;" (jsonify $metasp) }}
{{ end }}
{{ define "main" }}SECTIONS=[{{ range .Site.Sections }}{"section": "{{ with .File }}{{ trim .Dir "/" }}{{ end }}", "items": [{{ range .Pages }}"{{ .File.BaseFileName }}", {{ end }}]}, {{ end }}];{{ end }}

View file

@ -11,21 +11,10 @@
<meta name="keywords" content="{{ delimit .Keywords "," }}" />
{{ end }}
{{ if .Params.editors }}
{{ range .Params.editors }}
{{ $e := $.GetPage (printf "editor/%s" .) }}
<meta name="editor" content="{{ $e.Title }}" />
{{ end }}
{{ if .Params.Author }}
<meta name="author" content="{{ .Params.Author}}" />
{{ end }}
{{ if .Params.authors }}
{{ range .Params.authors }}
{{ $e := $.GetPage (printf "author/%s" .) }}
<meta name="author" content="{{ $e.Title }}" />
{{ end }}
{{ end }}
{{ template "_internal/opengraph.html" . }}
{{ template "_internal/twitter_cards.html" . }}
@ -38,9 +27,9 @@
<link rel="mask-icon" href="/safari-pinned-tab.svg" color="#996561">
{{ if eq hugo.Environment "dev" }}
{{ $style := resources.Get "css/site.css" | resources.PostCSS (dict "config" "assets/css/postcss.config.js") | minify }}
{{ $style := resources.Get "css/site.css" | postCSS (dict "config" "assets/css/postcss.config.js") | minify }}
<link rel="stylesheet" href="{{ $style.RelPermalink }}" />
{{ $style := resources.Get "css/player.css" | resources.PostCSS (dict "config" "assets/css/postcss.config.js") | minify }}
{{ $style := resources.Get "css/player.css" | postCSS (dict "config" "assets/css/postcss.config.js") | minify }}
<link rel="stylesheet" href="{{ $style.RelPermalink }}" />
{{ else }}
<link rel="stylesheet" href="/css/site.min.css" />

View file

@ -36,16 +36,6 @@
<a class="edit-button" target="_blank" href="{{ $.Site.Params.sandpointsGiteaUrl }}/_edit/master/PUBLISH.trigger.md">PUBLISH</a>
<a class="edit-button" target="_blank" href="{{ $.Site.Params.sandpointsGiteaUrl }}"> ? </a>
</div>
{{ else }}
{{ $editPage := $.Site.GetPage "/edit" }}
<div class="headiter" id="preview">
<a class="edit-button" href="{{ $editPage.RelPermalink }}index.html?edit={{ .File.UniqueID }}">EDIT_THIS</a>
{{ with $scratch.core }}<a class="edit-button" href="{{ $editPage.RelPermalink }}index.html?new={{ index . 0 }}">ADD_{{ index . 0 | upper }}</a>{{ end }}
{{ with $scratch.mantle }}<a class="edit-button" href="{{ $editPage.RelPermalink }}index.html?new={{ index . 0 }}">ADD_{{ index . 0 | upper }}</a>{{ end }}
{{ with $scratch.crust }}<a class="edit-button" href="{{ $editPage.RelPermalink }}index.html?new={{ index . 0 }}">ADD_{{ index . 0 | upper }}</a>{{ end }}
{{ if not $scratch.core }}<a class="edit-button" href="{{ $editPage.RelPermalink }}index.html?new={{ $currentDir }}">ADD_{{ substr $currentDir 0 -1 | upper }}</a>{{ end }}
</div>
</div>
{{ end }}
<div class="header">

View file

@ -1,5 +1,2 @@
<link href="/css/paged_interface.css" rel="stylesheet" type="text/css">
<link href="/css/dyn.css" rel="stylesheet" type="text/css">
<link href="/css/print.css" rel="stylesheet" type="text/css">
<script src="/js/paged.polyfill.js"></script>
<script src="/js/pagedjsCustomizations.js"></script>

View file

@ -1,96 +0,0 @@
{{ $s := partialCached "scratch.html" . }}
{{ $currentNode := . }}
{{ $currentDir := "" }}
{{ with .File }}
{{ $currentDir = .Dir }}
{{ end }}
{{ $currentFile := (printf "/%s" .File) }}
{{ $scratch := $s.Get $currentFile }}
{{ $longestTitle := "" }}
<div id="ph-{{ .File.UniqueID }}" class="{{ $scratch.depth | default "crust" }}title"><span class="supt">{{ substr $currentDir 0 -1 }}</span>{{ .Title }}</div>
<div class="grid">
<div class="leftcolumn">
{{ if ne (trim .Page.TableOfContents "\n") "<nav id=\"TableOfContents\"></nav>" }}
{{ .Page.TableOfContents }}
{{ end }}
</div>
<div class="rightcolumn">
{{ $closeDivs := false }}
{{ $sandnamePlural := (slice) }}
{{ range $k, $v := $.Site.Data.sandpointsnamegraph }}
{{ $sandnamePlural = $sandnamePlural | append $v }}
{{ end }}
{{ $paramsKeys := (slice) }}
{{ range $k, $v := $currentNode.Params }}
{{ $paramsKeys = $paramsKeys | append $k }}
{{ end }}
{{ $mentions := intersect $paramsKeys $sandnamePlural }}
{{ range $mention := $mentions }}
{{ range $k, $m := index $currentNode.Params $mention }}
{{ $mentionLink := printf "/%s/%s" (substr $mention 0 -1) $m }}
{{- with $.GetPage $mentionLink -}}
{{ with not $k }}
{{ $closeDivs = true }}
<div class="has hasauthors">
<div class="hassup">{{ with (index $currentNode.Params $mention) }}{{ if gt (len (index $currentNode.Params $mention)) 1 }}{{ $mention }}{{ else }}{{ substr $mention 0 -1 }}{{ end }}{{ end }}</div>
<div class="afterhas">
{{ end }}
<div class="crust">
<a href="#ph-{{ .File.UniqueID }}">{{ .Title }}</a>
</div>
{{ end }}
{{ end }}
{{ end }}
{{- with $closeDivs -}}</div></div>{{ end }}
{{ if and (not (eq $scratch.depth "crust")) $scratch.has_children }}
<div class="has hashas">
{{ with $scratch.has }}
<div class="hassup">has {{ $scratch.has }}</div>
{{ end }}
<div class="afterhas">
{{ range $scratch.has_children }}
{{ $authors := "" }}
{{ range $k, $authorLink := .Params.authors }}
{{ $authorPage := $.GetPage (printf "/author/%s" $authorLink) }}
{{ $prefix := ", " }}
{{ with not $k }}
{{ $prefix = "" }}
{{ end }}
{{ $authors = printf "%s%s" $prefix $authorPage.Title }}
{{ end }}
<div class="{{ $scratch.child_depth }} crustoc">
<a class="toc" href="#ph-{{ .File.UniqueID }}"><span><span class="back">{{ .Title }} {{with $authors}}({{ $authors }}){{ end }}</span></span></a>
</div>
{{ if gt (len .Title) (len $longestTitle) }}
{{ $longestTitle = .Title }}
{{ end }}
{{ end }}
<div class="{{ $scratch.child_depth }} crustoc longesttitle">
<a class="toc" href="javascript:;"><span><span class="back">{{ $longestTitle }}.....</span></span></a>
</div>
</div></div>
{{ end }}
{{ if eq $scratch.depth "crust" }}
<div class="has hasin">
<div class="hassup">in {{ index $scratch.in 1 }}</div>
<div class="afterhas">
{{ range $scratch.is_in }}
<div class="{{ substr $currentDir 0 -1 }}">
<a href="{{ .RelPermalink }}{{ if eq hugo.Environment "offline" }}index.html{{ end }}">{{ .Title }}</a>
</div>
{{ end }}
</div></div>
{{ end }}
</div>
</div>
{{ with .Page.Params.abstract }}<div class="abstract"><span class="supt">abstract</span>{{ . | $.Page.RenderString | htmlUnescape | safeHTML }}</div>{{ end }}
{{- $vld := false -}}{{- range $k, $v := .Page.Params.keywords -}}{{- if eq $k 0 -}}{{- $vld = true -}}<div class="keywords"><span class="sup">keywords</span>{{- $v -}}{{- else -}},&nbsp;{{- $v -}}{{- end -}}{{- end -}}{{- with $vld -}}</div>{{- end -}}

View file

@ -1,13 +0,0 @@
{{ $parentName := . }}
{{ range (readDir .) }}
{{ $currentName := printf "%s/%s" $parentName .Name }}
{{ if .IsDir }}
<p>_Dir: {{ $currentName }}</p>
{{ partial "readdir.html" $currentName }}
{{ else }}
{{ if eq (path.Ext .Name) ".md" }}
{{ $f := readFile $currentName }}
<textarea wrap="off" col="108" row="48 ">{{ $f }}</textarea>
{{ end }}
{{ end }}
{{ end }}

View file

@ -1,4 +1,4 @@
<script type="text/javascript">var relPathDepth = {{- .RelPermalink | strings.Count "/" -}};var sandpointsPageId = "{{- with .File -}}{{- .UniqueID -}}{{- end -}}";</script>
<script type="text/javascript">var relPathDepth = {{- .RelPermalink | strings.Count "/" -}};</script>
{{ $sjsopts := dict "targetPath" "js/sandpoints.js" "minify" "true"}}
{{ $sjs := resources.Get "js/sandpoints.js" | js.Build $sjsopts }}
<script defer src='{{ $sjs.RelPermalink }}' type="application/javascript"></script>

View file

@ -3,14 +3,6 @@
{{ $_ := newScratch }}
{{ $debug := (slice) }}
{{ $sandnameSingular := (slice) }}
{{ $sandnamePlural := (slice) }}
{{ range $k, $v := $.Site.Data.sandpointsnamegraph }}
{{ $sandnameSingular = $sandnameSingular | append $k }}
{{ $sandnamePlural = $sandnamePlural | append $v }}
{{ end }}
{{ $pPath := "" }}
{{ range $p := .Site.RegularPages }}
{{ $pPath = printf "/%s" $p.File }}
@ -31,21 +23,13 @@
{{ end }}
{{ end }}
{{ $paramsKeys := (slice) }}
{{ range $k, $v := $p.Params }}
{{ $paramsKeys = $paramsKeys | append $k }}
{{ end }}
{{ $mentions := intersect $paramsKeys $sandnamePlural }}
{{ range $mention := $mentions }}
{{ range $m := index $p.Params $mention }}
{{ $mentionLink := printf "/%s/%s" (substr $mention 0 -1) $m }}
{{ with ($_.Get $mentionLink) }}
{{ $p.Scratch.Add "links" (uniq (($p.Scratch.Get "links")| append ($.GetPage $mentionLink))) }}
{{ $_.SetInMap $mentionLink "backlinks" (uniq ((index ($_.Get $mentionLink) "backlinks") | append $p)) }}
{{ with $authors := $p.Params.authors }}
{{ range $author := $authors }}
{{ $authorLink := printf "/author/%s" $author }}
{{ with ($_.Get $authorLink) }}
{{ $_.SetInMap $authorLink "backlinks" (uniq ((index ($_.Get $authorLink) "backlinks") | append $p)) }}
{{ else }}
{{ $p.Scratch.Add "links" (uniq (($p.Scratch.Get "links")| append ($.GetPage $mentionLink))) }}
{{ $_.SetInMap $mentionLink "backlinks" (slice $p) }}
{{ $_.SetInMap $authorLink "backlinks" (slice $p) }}
{{ end }}
{{ end }}
{{ end }}

View file

@ -8,10 +8,6 @@
{{ $currentFile := (printf "/%s" .File) }}
{{ $scratch := $s.Get $currentFile }}
{{ $sandnamePlural := (slice) }}
{{ $sandnameSingular := "" }}
{{ $mentionLink := "" }}
<div class="{{ $scratch.depth | default "crust" }}title"><span class="supt">{{ substr $currentDir 0 -1 }}{{ substr .Title 0 1 }}</span>{{ substr .Title 1 }}</div></div>
<div class="grid">
@ -21,41 +17,22 @@
{{ end }}
</div>
<div class="rightcolumn">
{{ $closeDivs := false }}
{{ range $k, $v := $.Site.Data.sandpointsnamegraph }}
{{ $sandnamePlural = $sandnamePlural | append $v }}
{{ end }}
{{ $paramsKeys := (slice) }}
{{ range $k, $v := $currentNode.Params }}
{{ $paramsKeys = $paramsKeys | append $k }}
{{ end }}
{{ $mentions := intersect $paramsKeys $sandnamePlural }}
{{ range $mention := $mentions }}
{{ range $k, $m := index $currentNode.Params $mention }}
{{ range $k, $v := $.Site.Data.sandpointsnamegraph }}
{{ if eq $v $mention }}
{{ $mentionLink = printf "/%s/%s" $k $m }}
{{ $sandnameSingular = $k }}
{{ end }}
{{ end }}
{{- with $.GetPage $mentionLink -}}
{{- range $k, $v := .Page.Params.authors -}}
{{- with $.GetPage (printf "/author/%s" $v) -}}
{{- with not $k -}}
{{ $closeDivs = true }}
<div class="has hasauthors">
<div class="hassup">{{ with (index $currentNode.Params $mention) }}{{ if gt (len (index $currentNode.Params $mention)) 1 }}{{ $mention }}{{ else }}{{ $sandnameSingular }}{{ end }}{{ end }}</div>
<div class="hassup">author{{ with $.Page.Params.authors }}{{ if gt (len .) 1 }}s{{ end }}{{ end }}</div>
<div class="afterhas">
{{- end -}}
<div class="crust">
<a href="{{ .RelPermalink }}{{ if eq hugo.Environment "offline" }}index.html{{ end }}">{{ .Title }}</a>
</div>
{{- end -}}
{{ end }}
{{- with $closeDivs -}}</div></div>{{ end }}
{{ end }}
{{- end -}}
{{- with .Page.Params.authors -}}</div></div>{{- end -}}
{{ if in .Page.Site.Params.sandpointsMentionedIn (substr $currentDir 0 -1) }}
<div class="has hasmentionedin">
<div class="has">
{{ with $scratch.backlinks }}
<div class="hassup">mentioned in</div>
{{ end }}
@ -69,7 +46,7 @@
{{ end }}
{{ if and (not (eq $scratch.depth "crust")) $scratch.has_children }}
<div class="has hashas">
<div class="has">
{{ with $scratch.has }}
<div class="hassup">has {{ $scratch.has }}</div>
{{ end }}
@ -83,7 +60,7 @@
{{ end }}
{{ if eq $scratch.depth "crust" }}
<div class="has hasin">
<div class="has">
<div class="hassup">in {{ index $scratch.in 1 }}</div>
<div class="afterhas">
{{ range $scratch.is_in }}
@ -97,9 +74,8 @@
</div>
{{ with .Page.Params.abstract }}<div class="abstract"><span class="supt">abstract</span>{{ . | $.Page.RenderString | htmlUnescape | safeHTML }}</div>{{ end }}
{{ with .Page.Params.abstract }}<div class="journal"></div><div class="abstract"><span class="supt">abstract</span>{{ . | markdownify }}</div>{{ end }}
{{- $vld := false -}}{{- range $k, $v := .Page.Params.keywords -}}{{- if eq $k 0 -}}{{- $vld = true -}}<div class="keywords"><span class="sup">keywords</span><a href="/keywords/{{ urlize $v }}/{{ if eq hugo.Environment "offline" }}index.html{{ end }}">{{- $v -}}</a>{{- else -}},&nbsp;<a href="/keywords/{{ urlize $v }}/{{ if eq hugo.Environment "offline" }}index.html{{ end }}">{{- $v -}}</a>{{- end -}}{{- end -}}{{- with $vld -}}</div>{{- end -}}
{{ $var := printf "repo={\"frontmatter\": %s, \"content\": %s, \"path\": \"%s\", \"relpermalink\": \"%s\" }" (jsonify .Params) (jsonify .RawContent) .File.Path .RelPermalink | resources.FromString (printf "js/repo/%s.js" .File.UniqueID) }}
{{ $dummy := $var.Permalink }}
{{- $vld := false -}}{{- range $k, $v := .Page.Params.keywords -}}{{- if eq $k 0 -}}{{- $vld = true -}}<div
class="keywords"><span class="sup">keywords</span>{{- $v -}}{{- else -}},&nbsp;{{- $v -}}{{- end -}}{{- end -}}{{- with $vld -}}</div>{{- end -}}
{{ with .Page.Params.abstract }}</div>{{ end }}

View file

@ -2,10 +2,12 @@
<html lang="{{ with .Site.LanguageCode }}{{ . }}{{- else -}}en-us{{- end -}}">
<head>
{{- partial "head.html" . -}}
{{- partialCached "head.html" . -}}
{{- partial "pagedjs.html" . -}}
</head>
<body>
<article>
{{- block "singlebody" . -}}{{- end -}}
</article>
</body>
</html>

View file

@ -1,63 +1,4 @@
{{- define "singlebody" -}}
{{ $cssTemplate := `.css-_rplc_-h2 {
counter-reset: css-_rplc_-h3;
}
.css-_rplc_-h3 {
counter-reset: css-_rplc_-h4;
}
.css-_rplc_-h4 {
counter-reset: css-_rplc_-h5;
}
.css-_rplc_-h5 {
counter-reset: css-_rplc_-h6;
}
.css-_rplc_-h2:before {
color: rgba(0, 0, 0, 0.4);
counter-increment: css-_rplc_-h2 1;
content: counter(css-_rplc_-h2) ". ";
}
.css-_rplc_-h3:before {
color: rgba(0, 0, 0, 0.4);
counter-increment: css-_rplc_-h3 1;
content: counter(css-_rplc_-h2) "." counter(css-_rplc_-h3) ". ";
}
.css-_rplc_-h4:before {
color: rgba(0, 0, 0, 0.4);
counter-increment: css-_rplc_-h4 1;
content: counter(css-_rplc_-h2) "." counter(css-_rplc_-h3) "." counter(css-_rplc_-h4) ". ";
}
.css-_rplc_-h5:before {
color: rgba(0, 0, 0, 0.4);
counter-increment: css-_rplc_-h5 1;
content: counter(css-_rplc_-h2) "." counter(css-_rplc_-h3) "." counter(css-_rplc_-h4) "." counter(css-_rplc_-h5) ". ";
}
.css-_rplc_-h6:before {
color: rgba(0, 0, 0, 0.4);
counter-increment: css-_rplc_-h6 1;
content: counter(css-_rplc_-h2) "." counter(css-_rplc_-h3) "." counter(css-_rplc_-h4) "." counter(css-_rplc_-h5) "."
counter(css-_rplc_-h6) ". ";
}
.css-_rplc_-h2.nocount:before,
.css-_rplc_-h3.nocount:before,
.css-_rplc_-h4.nocount:before,
.css-_rplc_-h5.nocount:before,
.css-_rplc_-h6.nocount:before {
content: "";
counter-increment: none;
}` }}
{{ $cssOutput := "" }}
{{ $cssHashes := "" }}
{{ $s := partialCached "scratch.html" . }}
{{ $p := $.GetPage .Params.print }}
{{ $scratch := $s.Get (printf "/%s" $p.File) }}
@ -67,87 +8,17 @@
{{ $currentDir = .Dir }}
{{ end }}
<div class="print0">{{ partial "printsinglebody.html" $p }}</div>
<div class="content">{{ $p.Content }}</div>
{{ $cssOutput = printf "%s\n%s" $cssOutput (replace $cssTemplate "_rplc_" $p.File.UniqueID) }}
{{ $cssHashes = printf "%s css-%s-h2" $cssHashes $p.File.UniqueID }}
{{ range $scratch.has_children }}
<div class="crustpage">
{{ $addS := 0 }}
{{ with .Params.authors }}
{{ $addS = len . }}
<div class="print0">{{ partial "singlebody.html" $p }}</div>
<div class="content">{{ $p.Content }}
{{ range $printPage := $scratch.has_cildren }}
<div class="print1">{{ partial "singlebody.html" $printPage }}</div>
<div class="content">{{ $printPage.Content }}
{{ $printPageScratch := $s.Get (printf "/%s" $printPage.File) }}
{{ range $printPageKid := $printPageScratch.has_children }}
<div class="print2">{{ partial "singlebody.html" $printPageKid }}</div>
<div class="content">{{ $printPageKid.Content }}
{{ . }}
{{ end }}
{{ range $n, $authorFile := .Params.authors }}
{{ $author := $.GetPage (printf "/author/%s" $authorFile) }}
{{ if eq $n 0 }}
<div class="runningAuthors"><span class="sup">author{{ with (gt $addS 1) }}s{{ end }}</span><a href="#ph-{{ $author.File.UniqueID }}">{{ $author.Title }}</a>
{{ else }}
, <a href="#ph-{{ $author.File.UniqueID }}">{{ $author.Title }}</a>
{{ end }}
{{ end }}
{{ with .Params.authors }}</div>{{ end }}
{{ $tit := .Title }}
{{ if gt (len .Title) 54 }}
{{ $tit = printf "%s…" (substr .Title 0 50) }}
{{ end }}
<div class="runningTitle"><span class="sup">{{ index $scratch.crust 0 }}</span><a href="#ph-{{ .File.UniqueID }}">{{ $tit }}</a></div>
{{ partial "printsinglebody.html" . }}
{{ .Content }}
{{ $cssOutput = printf "%s\n%s" $cssOutput (replace $cssTemplate "_rplc_" .File.UniqueID) }}
{{ $cssHashes = printf "%s css-%s-h2" $cssHashes .File.UniqueID }}
{{ $kid := $s.Get (printf "/%s" .File) }}
{{ range $kid.has_children }}
<div class="crustpage">
{{ $addS := 0 }}
{{ with .Params.authors }}
{{ $addS = len . }}
{{ end }}
{{ range $n, $authorFile := .Params.authors }}
{{ $author := $.GetPage (printf "/author/%s" $authorFile) }}
{{ if eq $n 0 }}
<div class="runningAuthors"><span class="sup">author{{ with (gt $addS 1) }}s{{ end }}</span><a href="#ph-{{ $author.File.UniqueID }}">{{ $author.Title }}</a>
{{ else }}
, <a href="#ph-{{ $author.File.UniqueID }}">{{ $author.Title }}</a>
{{ end }}
{{ end }}
{{ with .Params.authors }}</div>{{ end }}
{{ $tit := .Title }}
{{ if gt (len .Title) 54 }}
{{ $tit = printf "%s…" (substr .Title 0 50) }}
{{ end }}
<div class="runningTitle"><span class="sup">{{ index $scratch.crust 0 }}</span><a href="#ph-{{ .File.UniqueID }}">{{ $tit }}</a></div>
{{ partial "printsinglebody.html" . }}
{{ .Content }}
{{ $cssOutput = printf "%s\n%s" $cssOutput (replace $cssTemplate "_rplc_" .File.UniqueID) }}
{{ $cssHashes = printf "%s css-%s-h2" $cssHashes .File.UniqueID }}
{{ end }}
{{ end }}
{{ range where $.Site.RegularPages "Section" "in" (slice "author" "editor") }}
<div class="authorpage">
<div class="runningTitle runningAuthors"><span class="sup">{{ index $scratch.mantle 0 }}</span><a href="#ph-{{ $p.File.UniqueID }}">{{ $p.Title }}</a></div>
<div id="ph-{{ .File.UniqueID }}" class="{{ $scratch.depth | default "crust" }}title"><span class="supt">{{ substr .File.Dir 0 -1 }}</span>{{ .Title }}</div>
{{ .Content }}
{{ if in .Page.Site.Params.sandpointsMentionedIn (substr .File.Dir 0 -1) }}
{{ $ss := $s.Get (printf "/%s" .File) }}
<div class="has hasmentionedin">
{{ with $ss }}
<div class="hassup">mentioned in</div>
{{ end }}
<div class="afterhas">
{{ range $ss.backlinks }}
<div class="{{ $ss.child_depth }}">
<a href="#ph-{{ .File.UniqueID }}">{{ .Title }}</a>
</div>
{{ end }}
</div></div>
{{ end }}
{{ end }}
{{ $cssOutput = printf "body {counter-reset: %s;}\n%s" $cssHashes $cssOutput }}
{{ $var := $cssOutput | resources.FromString "css/dyn.css" }}
{{ $dummy := $var.Permalink }}
{{- end -}}

View file

@ -1,12 +0,0 @@
<!DOCTYPE html>
<html lang="{{ with .Site.LanguageCode }}{{ . }}{{ else }}en-us{{ end }}">
<head>
{{- partialCached "head.html" . -}}
<title>{{- .Title }} - {{ .Site.Title -}}</title>
{{- partialCached "sandpointjs.html" . .RelPermalink -}}
</head>
<body>
{{- block "keywords" . -}}{{- end -}}
{{- partialCached "footer.html" . -}}
</body>
</html>

View file

@ -1,23 +0,0 @@
{{ define "keywords" }}
{{ $p := split (trim .RelPermalink "/") "/" }}
{{ if eq (len $p) 1 }}
<div class="coretitle"><span class="supt">{{ index $p 0 }}</span>All</div>
{{ range $taxonomyname, $taxonomy := .Site.Taxonomies }}
{{ if eq (index $p 0) $taxonomyname }}
{{ range $key, $value := $taxonomy }}
<span> <a href="/{{ index $p 0 }}/{{ $key }}/{{ if eq hugo.Environment "offline" }}index.html{{ end }}">{{ $key }}</a>({{ len (index (index $.Site.Taxonomies $taxonomyname) $key) }})</span>
{{ end }}
{{ end }}
{{ end }}
{{ else }}
<div class="coretitle"><span class="supt">{{ index $p 0 }}</span>{{ index $p 1 }}</div>
{{ range .Pages.ByDate.Reverse }}
<div class="blog-date">{{ .Date.Format "Jan 2, 2006" }}</div>
<div class="blog-title"><a href="{{ .RelPermalink }}{{ if eq hugo.Environment "offline" }}index.html{{ end }}">{{ .Title }}</a></div>
{{ range $n, $authorFile := .Params.authors }}
{{ $author := $.GetPage (printf "/author/%s" $authorFile) }}
<span class="blog-author"><a href="{{ $author.RelPermalink }}">{{ $author.Title }}</a></span>
{{ end }}
{{ end }}
{{ end }}
{{ end }}

View file

@ -5,6 +5,7 @@
<div id="toggleAllLinks" onclick="toggleAllLinks()">[toggle expand/collapse]</div>
<p></p>
{{ range $p := .Site.RegularPages }}
{{ with or ($p.Scratch.Get "urls") ($p.Scratch.Get "bibs") ($p.Scratch.Get "links") ($p.Scratch.Get "backlinks" )}}
<details><summary>{{ with $p.File }}<span class="sup">{{- substr .Dir 0 -1 -}}</span>{{ end }}<a href="{{ $p.RelPermalink }}{{ if eq hugo.Environment "offline" }}index.html{{ end }}">{{ $p.Title }}</a></summary>
{{ $pPath := printf "/%s" $p.File }}
@ -21,9 +22,9 @@
{{ end }}
{{ with ($p.Scratch.Get "links") }}
{{ range $i, $_ := uniq ($p.Scratch.Get "links") }}
{{ range $i, $_ := ($p.Scratch.Get "links") }}
{{ if eq $i 0 }}
<details><summary>Internal links to other Sandpoint pages ({{ len (uniq ($p.Scratch.Get "links")) }}):</summary><ul>
<details><summary>Internal links to other Sandpoint pages ({{ len ($p.Scratch.Get "links") }}):</summary><ul>
{{ end }}
<li>{{ with $_.File }}<span class="sup">{{ substr .Dir 0 -1 }}</span>{{ end }}<a href="{{ $_.RelPermalink }}">{{ $_.Title }}</a></li>
{{ end }}
@ -101,4 +102,5 @@
</details>
{{ end }}
{{ end }}
{{ end }}

View file

@ -1,242 +0,0 @@
@page {
size: 6.14in 9.21in;
margin-bottom: 0.8in;
padding-bottom: 0.2in;
margin-top: 0.7in;
}
@page:left {
margin-right: 0.8in;
margin-left: 0.9in;
@bottom-left-corner {
content: counter(page);
font-size: 1rem;
vertical-align: text-top;
}
@bottom {
content: element(runningTitle);
position: relative;
}
}
@page:right {
margin-left: 0.8in;
margin-right: 0.9in;
@bottom-right-corner {
content: counter(page);
font-size: 1rem;
vertical-align: text-top;
}
@bottom {
content: element(runningAuthors);
position: relative;
}
}
@page crustpage :first {
@bottom-right-corner {
content: none;
}
@bottom {
content: none;
}
}
@media print {
html {
font-size: 0.8em;
box-sizing: border-box;
margin: 0;
padding: 0;
}
body {
font-size: 1rem;
padding: 0;
margin: 0;
}
.sup,
.hassup {
color: black;
}
.grid {
display: inline;
}
.coretitle {
margin-top: 3rem;
margin-bottom: 2rem;
font-size: 2.2rem;
}
.leftcolumn {
display: none;
}
.has,
.afterhas {
font-size: 1.1rem;
}
.mantle,
.crust {
margin-bottom: 0.2em;
}
.content {
padding: 0px;
margin: 0 auto;
margin-top: 4rem;
}
.hpar {
display: none;
}
.mantletitle {
font-size: 1.7rem;
}
.sessiongrid {
display: none;
}
#bibliography {
break-before: page;
}
.footnotes ol {
margin-top: 3rem;
padding-left: 0.9rem;
}
.footnotes hr {
border: none;
border-top: 0px;
text-align: left;
margin-top: 2rem;
margin-bottom: -2rem;
}
.footnotes hr::after {
content: "Endnotes";
font-size: 1.2rem;
font-weight: bold;
}
.runningTitle {
position: running(runningTitle);
}
.runningAuthors {
position: running(runningAuthors);
}
.hasauthors .afterhas {
font-size: 1.5rem;
}
.crustpage {
break-before: page;
page: crustpage;
}
.hasin {
display: none;
}
.abstract {
margin-left: 0;
margin-right: 0;
max-width: inherit;
}
.keywords {
margin-left: 0;
margin-right: 0;
max-width: inherit;
padding-left: 0;
padding-right: 0;
font-size: 0.9rem;
}
/*
h2:before,
h3:before,
h4:before,
h5:before {
content: none;
}
*/
h2, h3, h4, h5, hr {
break-after: avoid;
}
.glosscontainer,
table,
table + p,
tr,
blockquote,
li {
break-inside: avoid;
}
.authorpage {
break-before: page;
}
img {
display: block;
max-height: 150mm;
width: auto;
break-after: avoid;
margin-bottom: 0.5rem;
margin-left: 1rem;
}
.crustoc {
position: relative;
bottom: 0
}
a.toc::before {
direction: rtl;
content: " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . "" . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . "" . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . "" . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ";
line-height: 0;
height: 1px;
position: absolute;
bottom: 10px;
z-index: -1;
}
a.toc {
display: grid;
grid-template-columns: 1fr auto;
align-items: flex-end;
}
a.toc span {
}
a.toc .back {
background: white;
}
a.toc::after {
text-align: right;
float: right;
content: target-counter(attr(href url), page, decimal-leading-zero);
background: white;
padding-left: 0.1rem;
}
ol[data-split-from] {
padding-left: 0.5rem;
}
.longesttitle {
visibility: hidden;
cursor: default;
}
}

File diff suppressed because one or more lines are too long

View file

@ -1,100 +0,0 @@
var UID = {
_current: 0,
getNew: function(){
this._current++;
return this._current;
}
};
HTMLElement.prototype.pseudoStyle = function(element,prop,value){
var _this = this;
var _sheetId = "pseudoStyles";
var _head = document.head || document.getElementsByTagName('head')[0];
var _sheet = document.getElementById(_sheetId) || document.createElement('style');
_sheet.id = _sheetId;
var className = "pseudoStyle" + UID.getNew();
_this.className += " "+className;
_sheet.innerHTML += " ."+className+":"+element+"{"+prop+":"+value+"}";
_head.appendChild(_sheet);
return this;
};
class Sandpoints extends Paged.Handler {
constructor(chunker, polisher, caller) {
super(chunker, polisher, caller);
}
beforeParsed(content) {
var d = {};
content.querySelectorAll('*').forEach((n, i)=> {
if (n.hasAttribute("printhref")) {
n.setAttribute("href", n.getAttribute("printhref"))
}
if (n.classList.length > 0 ) {
n.classList.forEach((c, i)=>{
if (c.startsWith("css-")) {
(c in d) ? d[c]++ : d[c] = 1
let s = ""
Object.keys(d).filter(ks => ks.startsWith(c.slice(0, -1))).forEach((t, i)=> {if (c >= t) {s += `${d[t]}.`}})
n.pseudoStyle('before','content', `"${s} "`)
}
})
}
})
}
afterPageLayout(pageElement, page, breakToken, chunker) {
// Find all split table elements
let tables = pageElement.querySelectorAll("table[data-split-from]");
tables.forEach((table) => {
// There is an edge case where the previous page table
// has zero height (isn't visible).
// To avoid double header we will only add header if there is none.
let tableHeader = table.querySelector("thead");
if (tableHeader) {
return;
}
// Get the reference UUID of the node
let ref = table.dataset.ref;
// Find the node in the original source
let sourceTable = chunker.source.querySelector("[data-ref='" + ref + "']");
// Find if there is a header
let sourceHeader = sourceTable.querySelector("thead");
if (sourceHeader) {
// Clone the header element
let clonedHeader = sourceHeader.cloneNode(true);
// Insert the header at the start of the split table
table.insertBefore(clonedHeader, table.firstChild);
}
});
// Find all tables
tables = pageElement.querySelectorAll("table");
// special case which might not fit for everyone
tables.forEach((table) => {
// if the table has no rows in body, hide it.
// This happens because my render engine creates empty tables.
let sourceBody = table.querySelector("tbody > tr");
if (!sourceBody) {
console.log("Table was hidden, because it has no rows in tbody.");
table.style.visibility = "hidden";
table.style.position = "absolute";
var lineSpacer = table.nextSibling;
if (lineSpacer) {
lineSpacer.style.visibility = "hidden";
lineSpacer.style.position = "absolute";
}
}
});
}
}
Paged.registerHandlers(Sandpoints);

Binary file not shown.

Before

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 37 KiB

View file

@ -1,145 +0,0 @@
<!doctype html>
<html lang="en-us">
<head><meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="msapplication-TileColor" content="#da532c">
<meta name="theme-color" content="#ffffff">
<html class="no-js" lang="">
<style>
@font-face {
font-family: "Great Vibes";
font-style: normal;
font-weight: 400;
src: url("../fonts/great-vibes-v7-latin-ext_latin-regular.eot");
/* IE9 Compat Modes */
src: local("Great Vibes"), local("GreatVibes-Regular"),
url("../fonts/great-vibes-v7-latin-ext_latin-regular.eot?#iefix")
format("embedded-opentype"),
/* IE6-IE8 */ url("great-vibes-v7-latin-ext_latin-regular.woff2")
format("woff2"),
/* Super Modern Browsers */
url("../fonts/great-vibes-v7-latin-ext_latin-regular.woff") format("woff"),
/* Modern Browsers */
url("../fonts/great-vibes-v7-latin-ext_latin-regular.ttf")
format("truetype"),
/* Safari, Android, iOS */
url("../fonts/great-vibes-v7-latin-ext_latin-regular.svg#GreatVibes")
format("svg");
/* Legacy iOS */
}
.content {
display: flex;
justify-content: center;
margin-top: 3rem;
}
.sandpointslogosize {
font-size: 15rem;
}
.sandpointlogo {
border-radius: 50%;
border: 0.3em solid red;
display: inline-flex;
font-family: "Great Vibes", cursive;
font-size: 1.2em;
font-weight: bold;
color: white;
background-color: red;
position: relative;
padding-left: 1em;
padding-right: 0.2em;
padding-bottom: 1.2em;
max-width: 0em;
max-height: 0em;
}
.sandpointF {
position: absolute;
font-size: 1.2em;
margin-top: -0.2em;
margin-left: -0.44em;
}
.sandpointN {
position: absolute;
font-size: 0.9em;
margin-top: 0.2em;
color: red;
margin-left: -0.45em;
}
.sandpointC {
position: absolute;
font-size: 1em;
margin-left: -0.4em;
margin-top: -0.04em;
padding-bottom: 2;
}
@media print {
.sandpointlogo {
border-radius: 50%;
border: 0.3em solid red;
display: inline-flex;
font-family: "Great Vibes", cursive;
font-size: 1.2em;
font-weight: bold;
color: white;
background-color: red;
position: relative;
padding-left: 1em;
padding-right: 0.2em;
padding-bottom: 1.2em;
max-width: 0em;
max-height: 0em;
}
.sandpointF {
position: absolute;
font-size: 1.2em;
margin-top: -0.2em;
margin-left: -0.44em;
}
.sandpointN {
position: absolute;
font-size: 0.9em;
margin-top: 0.2em;
color: red;
margin-left: -0.45em;
}
.sandpointC {
position: absolute;
font-size: 1em;
margin-left: -0.4em;
margin-top: -0.04em;
padding-bottom: 2;
}
.content {
display: flex;
justify-content: center;
align-items: center;
}
.sandpointslogosize {
font-size: 15rem;
}
}
</style>
</head>
<body>
<div class="content">
<div class="sandpointslogosize">
<div class="sandpointlogo">
<span class="sandpointF">ß</span>
<span class="sandpointN"></span>
<span class="sandpointC">:</span>
</div>
</div>
</div>
</body>
</html>

View file

@ -1,2 +1 @@
# git.sandpoints.org/Drawwell/SandpointsTheme v0.0.0-20220418135300-b3e229aeea27
# git.sandpoints.org/Drawwell/SandpointsEditPage v0.0.0-20210825011616-e019d8a4d186
# git.sandpoints.org/Drawwell/SandpointsTheme v0.0.0-20201218222521-33a423ebe113

View file

@ -4,78 +4,53 @@ title = "Simple Sandpoints"
relativeurls = true
disableKinds = ["RSS", "sitemap"]
[taxonomies]
keyword = "keywords"
tag = "tags"
[params]
description = "Simple Sandpoints project to test and develop...."
# sandpointsGiteaUrl = "https://git.sandpoints.org/Drawwell/SimpleSandpoints"
sandpointsGiteaUrl = "http://localhost:3333/Sandpoints/SimpleSandpoints"
sandpointsCatalogPrefix = "/library/"
sandpointsCatalogName = "spheres"
description = "Simple Sandpoints project to test and develop...."
# sandpointsGiteaUrl = "https://git.sandpoints.org/Drawwell/SimpleSandpoints"
sandpointsGiteaUrl = "http://localhost:3333/Sandpoints/SimpleSandpoints"
sandpointsCatalogPrefix = "/library/"
sandpointsMentionedIn = ["annex"]
sandpointsMentionedIn = ["annex"]
[outputFormats]
[outputFormats.js]
isPlainText = true
mediaType = "application/javascript"
[outputFormats.js]
isPlainText = true
mediaType = "application/javascript"
[outputs]
list = ["html", "js"]
list = ["html", "js"]
[markup.tableOfContents]
endLevel=4
ordered = true
startLevel = 1
endLevel=4
ordered = true
startLevel = 1
[markup.goldmark.renderer]
unsafe = true
# [markup.goldmark.parser.attribute]
# block = true
unsafe = true
[module]
# replacement allow for easier local development
replacements = ["git.sandpoints.org/Drawwell/SandpointsTheme -> /home/m/devel/SandpointsTheme", "git.sandpoints.org/Drawwell/SandpointsEditPage -> /home/m/devel/SandpointsEditPage"]
[[module.imports]]
path = "git.sandpoints.org/Drawwell/SandpointsTheme"
[[module.imports]]
path = "git.sandpoints.org/Drawwell/SandpointsEditPage"
[[module.imports.mounts]]
source = "public/index.html"
target = "static/svedit/index.html"
[[module.imports.mounts]]
source = "public/global.css"
target = "static/svedit/global.css"
[[module.imports.mounts]]
source = "public/build"
target = "static/svedit/build"
[[module.imports.mounts]]
source = "archetypes"
target = "archetypes"
[[module.imports.mounts]]
source = "assets"
target = "assets"
[[module.imports.mounts]]
source = "layouts"
target = "layouts"
[[module.imports.mounts]]
source = "static"
target = "static"
[[module.imports.mounts]]
source = "data"
target = "data"
# [[module.imports.mounts]]
# source = "customizations/Dotawo/assets/css/site.css"
# target = "assets/css/site.css"
# [[module.imports.mounts]]
# source = "customizations/Dotawo/static/css/site.min.css"
# target = "static/css/site.min.css"
# replacement allow for easier local development
# replacements = "git.sandpoints.org/Drawwell/SandpointsTheme -> /home/m/devel/SandpointsTheme"
[[module.imports]]
path = "git.sandpoints.org/Drawwell/SandpointsTheme"
# [[module.imports.mounts]]
# source = "archetypes"
# target = "archetypes"
# [[module.imports.mounts]]
# source = "assets"
# target = "assets"
# [[module.imports.mounts]]
# source = "layouts"
# target = "layouts"
# [[module.imports.mounts]]
# source = "static"
# target = "static"
# [[module.imports.mounts]]
# source = "data"
# target = "data"
# [[module.imports.mounts]]
# source = "customizations/Dotawo/assets/css/site.css"
# target = "assets/css/site.css"
# [[module.imports.mounts]]
# source = "customizations/Dotawo/static/css/site.min.css"
# target = "static/css/site.min.css"

View file

@ -1,3 +1,4 @@
+++
title = "List of Annexes"
+++
---
title: List of Annexes
---

View file

@ -1,11 +1,8 @@
+++
title = "First annex"
+++
---
title: First annex
---
# First annex
This should work more as an example than anything else. But one could edit and play with it...
## One more title
Neverending stupid text testing things..

View file

@ -1,3 +0,0 @@
---
title: "List of authors"
---

View file

@ -1,7 +0,0 @@
---
title: Angelika Jakobi
---
# Biography
Angelika Jakobi holds a PhD in African linguistics from Hamburg University. Based on extensive periods of linguistic field work in Sudan and Tchad, her research has focused on some languages of the northeastern branch of Nilo-Saharan, particularly Fur, Nyima, Zaghawa, and Nubian. She is the author of *The Fur Language* (1990) and the compiler and annotator of the bibliography *The Nubian Languages* (1993, with Tanja Kümmerle). She has also published a study of the Saharan language Zaghawa, *Grammaire du beria* (2004, with Joachim Crass). In her articles she has explored aspects of semantics, morphosyntax, transitivity, grammatical relations, and case as well as historical-comparative issues. Although she has retired from her last position at Cologne University in 2016, she is still actively engaged in research.

View file

@ -1,7 +0,0 @@
---
title: Claude Rilly
---
# Biography
Claude Rilly is a senior researcher in CNRS (Centre national de la recherche scientifique) in Paris. Since 2019, he also hold the professorship in “Meroitic Language and Civilisation” at the École Pratique des Hautes Etudes, (Paris Sorbonne). From 2009 to 2014, he was director of the French Archaeological Unit in Khartoum (SFDAS). Since 2008, he leads the French Archaeological Mission of Sedeinga, in Sudanese Nubia. He has written three monographs on Meroitic language: *La langue du Royaume de Meroé* (2007), *Le méroïtique et sa famille lingustique* (2010), and *The Meroitic Language and Writing System* (with A. de Voogt, 2012), as well as a comprehensive “Histoire du Soudan, des origines à la chute du sultanat Fung” (2017).

View file

@ -1,7 +0,0 @@
---
title: George Starostin
---
# Biography
George Starostin is a leading researcher in comparative-historical linguistics at the Institute of Oriental and Classical Studies of the Higher School of Economics (Moscow, Russia), as well as head of the international project "Evolution of Human Languages" (Santa Fe Institute, New Mexico, USA).

View file

@ -1,7 +0,0 @@
---
title: Roger M. Blench
---
# Biography
Roger M. Blench is an anthropologist with interests in archaeology, linguistics and ethnomusicology. He gained his PhD from Cambridge University in 1975 and has since worked as a consultant sociologist. He is a Visiting Fellow at the McDonald Institute for Archaeological Research, University of Cambridge, a Visiting Lecturer at the University of Jos, and the Chief Research Officer of the Kay Williamson Educational Foundation.

View file

@ -1,7 +0,0 @@
---
title: Russell Norton
---
# Biography
Russell Norton is a Senior Lecturer in linguistics at the Theological College of Northern Nigeria and a linguistics consultant at SIL International. He is the author of several articles on various Eastern Sudanic and Niger-Congo languages, and former editor of *ccasional Papers in the study of Sudanese Languages.* His research interests include the documentation, description, history and ecology of languages of Nigeria and Sudan.

View file

@ -1,8 +0,0 @@
---
title: Vincent W.J. van Gerven Oei
draft: true
---
# Biography
Vincent W.J. van Gerven Oei is a publisher and philologist, specialized in Old Nubian. He is co-managing editor of _Dotawo: A Journal of Nubian Studies._

View file

@ -1,3 +0,0 @@
+++
title = "_index"
+++

View file

@ -1,18 +1,31 @@
+++
editors = ["vincentwjvangervenoei.md"]
entries = ["firstentry.md"]
has_topics = ["firsttopic.md", "secondtopic.md"]
title = "Race Critical Theories"
tags = ["blog"]
date = "2022-02-02"
authors = ["angelikajakobi.md"]
+++
---
title: Race Critical Theories
has_topics: ["firsttopic.md", "secondtopic.md"]
---
# Race Critical Theories, a curriculum
Here I will make stupid DOTs. . .
here i will make stupid dots....
![](<img:https://via.placeholder.com/1200 alt='some alt text' class='testimage'>)
<table style="border: 4px solid red" class="tg">
<thead style="border: 1px solid blue">
<tr>
<th style="border: 1px solid green" class="tg-0lax">a</th>
<th style="border: 1px solid green" class="tg-0lax">a</th>
<th style="border: 1px solid green" class="tg-0lax">a</th>
</tr>
</thead>
<tbody>
<tr style="border: 1px solid green">
<td style="border: 1px solid green" class="tg-0lax" colspan="2">b</td>
<td style="border: 1px solid green" class="tg-0lax">b</td>
</tr>
<tr style="border: 1px solid green">
<td style="border: 1px solid green" class="tg-0lax">c</td>
<td style="border: 1px solid green" class="tg-0lax" colspan="2">c</td>
</tr>
</tbody>
</table>
Here we want to describe what the project is about... Also we want to link to ![first annex](annex:firstannex.md) or ![first syllabus](syllabus:firstsyllabus.md)

View file

@ -1,74 +0,0 @@
+++
title = "Sandpoints"
+++
# Sandpoints
## Technical details
- [Repositories with short descriptions](https://git.sandpoints.org/Drawwell)
- [Documentation (old)](https://git.memoryoftheworld.org/PirateCare/Syllabus)
very basic one mostly to show how to use custom header with shortcut links from particular page's preview version pointing to its Gitea's builtin editor.
## User communities
[Public repositories](https://git.sandpoints.org/explore/repos). Some of the repositories are not public and quite few are either in its infancy stage or just stale.
## Flagship projects
### Dotawo - A Journal of Nubian Studies
#### About
Nubian studies needs a platform in which the old meets the new, in which archaeological, historical, and philological research into Meroitic, Old Nubian, Coptic, Greek, and Arabic sources confront current investigations in modern anthropology and ethnography, Nilo-Saharan linguistics, and critical and theoretical approaches present in postcolonial and African studies.
The journal Dotawo: A Journal of Nubian Studies brings these disparate fields together within the same fold, opening a cross-cultural and diachronic field where divergent approaches meet on common soil. Dotawo gives a common home to the past, present, and future of one of the richest areas of research in African studies. It offers a crossroads where papyrus can meet internet, scribes meet critical thinkers, and the promises of growing nations meet the accomplishments of old kingdoms.
#### Link to particular features
- [Issue 7](https://pages.sandpoints.org/dotawo/issue/dotawo7/)
- [Preview veresion with custom header to Gitea](https://pages.sandpoints.org/dotawo/_preview/journal/)
- [Issue7 Print to PDF Page](https://pages.sandpoints.org/dotawo/print/issue7/)
> NOTE: in order to print one should wait for pagination to be calculated. Once finished use browser's print feature.
- [Structure of the Sandpoints project](https://pages.sandpoints.org/dotawo/urls/)
- [Standalone dedicated library](https://pages.sandpoints.org/dotawo/library/BROWSE_LIBRARY.html)
- [Bibliography Example](https://pages.sandpoints.org/dotawo/article/norton/#bibliography)
### Machine Listening, a curriculum
#### About
Our devices are listening to us. Previous generations of audio-technology transmitted, recorded or manipulated sound. Today our digital voice assistants, smart speakers and a growing range of related technologies are increasingly able to analyse and respond to it as well. Scientists and engineers increasingly refer to this as “machine listening”, though the first widespread use of the term was in computer music. Machine listening is much more than just a new scientific discipline or vein of technical innovation however. It is also an emergent field of knowledge-power, of data extraction and colonialism, of capital accumulation, automation and control. It demands critical and artistic attention.
MACHINE LISTENING is a new investigation and experiment in collective learning, instigated by artist wwwSean Dockray, legal scholar wwwJames Parker, and curator wwwJoel Stern for wwwLiquid Architecture and launched at wwwUnsound 2020: Intermission. It comes out of our previous work on wwwEavesdropping.
#### Link to particular features
- [Front page](https://machinelistening.exposed/curriculum/)
- [Self hosting Gitea](http://git.metadada.xyz/machinelistening/curriculum)
- [Embedded video/audio](https://machinelistening.exposed/topic/against-the-coming-world-of-listening-machines/)
NOTE: audio has a nice representation playing audio over hyperlink showing its progress.
NOTE: They were not interested in printing but also didn't do all of the possible interlinking structure. A lot of links are straight to Gitea repo to markdown file even there's a rendered version on the website. They were also very early adopters so they didn't use all of the features. For example backlinks support showing where some page is `Mentioned in`. Things like that. Still very impressive work on its own.
### Pirate Care - Syllabus
#### About
Pirate Care is a research process - primarily based in the transnational European space - that maps the increasingly present forms of activism at the intersection of “care” and “piracy”, which in new and interesting ways are trying to intervene in one of the most important challenges of our time, that is, the crisis of care in all its multiple and interconnected dimensions.
> NOTE: Pirate care's Hugo theme was used as a prototype for Sandpoints but their differences are large if one compares the current Sandpoints and where Pirate Care was left.
#### Link to particular features
- [Front page](https://syllabus.pirate.care/)
- [PDF in its dedicated library](https://syllabus.pirate.care/library/BROWSE_LIBRARY.html#/book/7ea7d419-a6c0-40a4-98f1-05fbcb7442bf)
- [Exhibition](https://drugo-more.hr/en/pirate-care/), [more photos](https://photos.app.goo.gl/ryqJzBNQh5VicXT39)
> NOTE: everything printed for the exhibition was done "live" using Chrome's Dev tools and printing it directly to PDF.
## Bibliography
- ![](bib:debb6d78-1906-45bb-9d49-1915957bb2d5)
- ![](bib:e3f3d418-3516-489e-bb1d-abcb3e4b568e)
- ![](bib:c09d1cc3-a271-41ef-8986-4074606103e7)

View file

@ -1,4 +0,0 @@
---
title: Edits
headless: true
---

View file

@ -1,3 +0,0 @@
---
title: "List of editors"
---

View file

@ -1,7 +0,0 @@
---
title: Vincent W.J. van Gerven Oei
---
# Biography
Vincent W.J. van Gerven Oei is a publisher and philologist, specialized in Old Nubian. He is co-managing editor of *Dotawo: A Journal of Nubian Studies.*

View file

@ -1,3 +0,0 @@
---
title: "List of Entries"
---

View file

@ -1,11 +0,0 @@
+++
title = "Foo bar"
+++
# First annex
This should work more as an example than anything else. But one could edit and play with it...
## One more title
Neverending stupid text testing things..

View file

@ -1,4 +0,0 @@
---
title: "Race Critical Theories"
print: "/curriculum/racecriticaltheories.md"
---

Binary file not shown.

Before

Width:  |  Height:  |  Size: 757 KiB

View file

@ -1,3 +1,3 @@
+++
title = "List of syllabi"
+++
---
title: List of syllabi
---

View file

@ -1,7 +1,8 @@
+++
title = "First syllabus inside a topic inside a curriculum"
+++
---
title: First syllabus inside a topic inside a curriculum
---
# First syllabus
This should work more as an example than anything else. But one could edit and play with it.
This should work more as an example than anything else. But one could edit and play with it...

View file

@ -1,8 +1,8 @@
---
title: "Fourth syllabus inside a second topic inside a curriculum"
title: Fourth syllabus inside a second topic inside a curriculum
---
# Fourth syllabus
This should work more as an example than anything else. But one could edit and play with it... Once again...
This should work more as an example than anything else. But one could edit and play with it...

View file

@ -1,7 +1,10 @@
---
title: "Second syllabus inside a topic inside a curriculum"
title: Second syllabus inside a topic inside a curriculum
---
# Second syllabus
This should work more as an example than anything else... This seems to work..
This should work more as an example than anything else. But one could edit and play with it...

View file

@ -1,7 +1,8 @@
---
title: "Third syllabus inside a topic inside a curriculum"
title: Third syllabus inside a second topic inside a curriculum
---
# Third syllabus
This should work more as an example than anything else... This seems to work.. Once again..
This should work more as an example than anything else. But one could edit and play with it...

View file

@ -1,44 +1,9 @@
+++
abstract = "Freeman and slave, patrician and plebeian, lord and serf, guild-master and journeyman, in a word, oppressor and oppressed, stood in constant opposition to one another, carried on an uninterrupted, now hidden, now open fight, a fight that each time ended, either in a revolutionary re-constitution of society at large, or in the common ruin of the contending classes."
editors = ["vincentwjvangervenoei.md"]
has_syllabi = ["firstsyllabus.md", "secondsyllabus.md"]
keywords = ["foobar"]
title = "First Topic in Curriculum"
tags = ["blog"]
date = "2022-02-01"
authors = ["angelikajakobi.md", "clauderilly.md"]
+++
---
title: First Topic in Curriculum
has_syllabi: ["firstsyllabus.md", "secondsyllabus.md"]
---
# First Topic in Curriculum
This should work more as an example than anything else. But one could edit and play with it..
This should work more as an example than anything else. But one could edit and play with it...
> some blockquote
The history of all hitherto existing societies is the history of class struggles.
Freeman and slave, patrician and plebeian, lord and serf, guild-master and journeyman, in a word, oppressor and oppressed, stood in constant opposition to one another, carried on an uninterrupted, now hidden, now open fight, a fight that each time ended, either in a revolutionary re-constitution of society at large, or in the common ruin of the contending classes.
In the earlier epochs of history, we find almost everywhere a complicated arrangement of society into various orders, a manifold gradation of social rank. In ancient Rome we have patricians, knights, plebeians, slaves; in the Middle Ages, feudal lords, vassals, guild-masters, journeymen, apprentices, serfs; in almost all of these classes, again, subordinate gradations.
The modern bourgeois society that has sprouted from the ruins of feudal society has not done away with class antagonisms. It has but established new classes, new conditions of oppression, new forms of struggle in place of the old ones. Our epoch, the epoch of the bourgeoisie, possesses, however, this distinctive feature: it has simplified the class antagonisms. Society as a whole is more and more splitting up into two great hostile camps, into two great classes, directly facing each other: Bourgeoisie and Proletariat.
From the serfs of the Middle Ages sprang the chartered burghers of the earliest towns. From these burgesses the first elements of the bourgeoisie were developed.
The discovery of America, the rounding of the Cape, opened up fresh ground for the rising bourgeoisie. The East-Indian and Chinese markets, the colonisation of America, trade with the colonies, the increase in the means of exchange and in commodities generally, gave to commerce, to navigation, to industry, an impulse never before known, and thereby, to the revolutionary element in the tottering feudal society, a rapid development.
The feudal system of industry, under which industrial production was monopolised by closed guilds, now no longer sufficed for the growing wants of the new markets. The manufacturing system took its place. The guild-masters were pushed on one side by the manufacturing middle class; division of labour between the different corporate guilds vanished in the face of division of labour in each single workshop.
Meantime the markets kept ever growing, the demand ever rising. Even manufacture no longer sufficed. Thereupon, steam and machinery revolutionised industrial production. The place of manufacture was taken by the giant, Modern Industry, the place of the industrial middle class, by industrial millionaires, the leaders of whole industrial armies, the modern bourgeois.
![](<vid:/static/video/tvtest.webm poster='/static/images/tvtest.png' width='50%'>)
Modern industry has established the world-market, for which the discovery of America paved the way. This market has given an immense development to commerce, to navigation, to communication by land. This development has, in its time, reacted on the extension of industry; and in proportion as industry, commerce, navigation, railways extended, in the same proportion the bourgeoisie developed, increased its capital, and pushed into the background every class handed down from the Middle Ages.
![first annex](annex:firstannex.md)
We see, therefore, how the modern bourgeoisie is itself the product of a long course of development, of a series of revolutions in the modes of production and of exchange.
![](<img:https://via.placeholder.com/150 alt='da li je ovo alt' class='testimage'>)
Each step in the development of the bourgeoisie was accompanied by a corresponding political advance of that class. An oppressed class under the sway of the feudal nobility, an armed and self-governing association in the mediaeval commune; here independent urban republic (as in Italy and Germany), there taxable "third estate" of the monarchy (as in France), afterwards, in the period of manufacture proper, serving either the semi-feudal or the absolute monarchy as a counterpoise against the nobility, and, in fact, corner-stone of the great monarchies in general, the bourgeoisie has at last, since the establishment of Modern Industry and of the world-market, conquered for itself, in the modern representative State, exclusive political sway. The executive of the modern State is but a committee for managing the common affairs of the whole bourgeoisie.

View file

@ -1,11 +1,10 @@
+++
title = "Second Topic in Curriculum"
has_syllabi = ["thirdsyllabus.md","fourthsyllabus.md"]
authors = ["clauderilly.md", "georgestarostin.md"]
tags = ["blog"]
date = "2022-02-06"
+++
---
title: Second Topic in Curriculum
has_syllabi: ["thirdsyllabus.md", "fourthsyllabus.md"]
---
# Second Topic in Curriculum
This should work more as an example than anything else. But one could edit and play with it...