Merge branch 'master' of https://git.sandpoints.org/UnionForNubianStudies/Dotawo
This commit is contained in:
commit
153afd5eab
34 changed files with 4882 additions and 2557 deletions
|
@ -477,8 +477,11 @@ ol li {
|
||||||
list-style-type: decimal;
|
list-style-type: decimal;
|
||||||
}
|
}
|
||||||
|
|
||||||
img {
|
img, video {
|
||||||
width: 100%;
|
max-width: 100%;
|
||||||
|
display: block;
|
||||||
|
margin-left: auto;
|
||||||
|
margin-right: auto;
|
||||||
}
|
}
|
||||||
|
|
||||||
.supt {
|
.supt {
|
||||||
|
@ -592,6 +595,7 @@ img {
|
||||||
|
|
||||||
.hasauthors {
|
.hasauthors {
|
||||||
font-size: 1.6rem !important;
|
font-size: 1.6rem !important;
|
||||||
|
display: flex;
|
||||||
}
|
}
|
||||||
|
|
||||||
.hassup {
|
.hassup {
|
||||||
|
@ -669,7 +673,7 @@ h6 {
|
||||||
padding-top: 1.2rem;
|
padding-top: 1.2rem;
|
||||||
padding-bottom: 1.2rem;
|
padding-bottom: 1.2rem;
|
||||||
background-color: rgba(0, 0, 0, 0.05);
|
background-color: rgba(0, 0, 0, 0.05);
|
||||||
max-width: 70ch;
|
max-width: 45ch;
|
||||||
}
|
}
|
||||||
|
|
||||||
.authors {
|
.authors {
|
||||||
|
@ -876,6 +880,11 @@ details {
|
||||||
background-color: #fff9f9;
|
background-color: #fff9f9;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.svedit {
|
||||||
|
display: none;
|
||||||
|
margin-left: 0.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
@media (max-width: 767px) {
|
@media (max-width: 767px) {
|
||||||
html {
|
html {
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
|
|
|
@ -54,7 +54,48 @@ 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) => {
|
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");
|
let preview = document.querySelector("#preview");
|
||||||
if (
|
if (
|
||||||
location.pathname.split("/").includes("_preview") ||
|
location.pathname.split("/").includes("_preview") ||
|
||||||
|
@ -66,6 +107,7 @@ window.addEventListener("DOMContentLoaded", (e) => {
|
||||||
let par = document.querySelector(
|
let par = document.querySelector(
|
||||||
"#TableOfContents > ol:first-child > li:first-child"
|
"#TableOfContents > ol:first-child > li:first-child"
|
||||||
);
|
);
|
||||||
|
if (par) {
|
||||||
let s = document.createElement("span");
|
let s = document.createElement("span");
|
||||||
s.appendChild(par.cloneNode(true));
|
s.appendChild(par.cloneNode(true));
|
||||||
par.remove();
|
par.remove();
|
||||||
|
@ -75,6 +117,7 @@ window.addEventListener("DOMContentLoaded", (e) => {
|
||||||
s,
|
s,
|
||||||
document.querySelector("#TableOfContents > ol:first-child").firstChild
|
document.querySelector("#TableOfContents > ol:first-child").firstChild
|
||||||
);
|
);
|
||||||
|
}
|
||||||
|
|
||||||
if (document.querySelector(".soundcite")) {
|
if (document.querySelector(".soundcite")) {
|
||||||
let relPath = "../".repeat(relPathDepth - 1);
|
let relPath = "../".repeat(relPathDepth - 1);
|
||||||
|
|
|
@ -427,6 +427,7 @@ ol li {
|
||||||
|
|
||||||
.hasauthors {
|
.hasauthors {
|
||||||
font-size: 1.6rem !important;
|
font-size: 1.6rem !important;
|
||||||
|
display: flex;
|
||||||
}
|
}
|
||||||
|
|
||||||
.hassup {
|
.hassup {
|
||||||
|
|
|
@ -5,7 +5,17 @@
|
||||||
{{ $_.Add "triads" $k }}
|
{{ $_.Add "triads" $k }}
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
|
|
||||||
{{- if strings.HasPrefix .Destination "bib:" -}}
|
{{- 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:" -}}
|
||||||
{{- $destination := (substr .Destination 4) -}}
|
{{- $destination := (substr .Destination 4) -}}
|
||||||
{{- $c_prefix := .Page.Site.Params.sandpointsCatalogPrefix | default "/library/" -}}
|
{{- $c_prefix := .Page.Site.Params.sandpointsCatalogPrefix | default "/library/" -}}
|
||||||
{{- if index $.Page.Site.Data.books.catalog $destination -}}
|
{{- if index $.Page.Site.Data.books.catalog $destination -}}
|
||||||
|
@ -22,16 +32,16 @@
|
||||||
<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>
|
<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>
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
{{- else -}}
|
{{- else -}}
|
||||||
<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>
|
<a href="{{- $c_prefix | safeURL -}}BROWSE_LIBRARY.html#/book/{{- $destination -}}"{{- with .Title}} title="{{- . -}}"{{- end -}}>{{- $text_link -}}⦚<span>bib:{{- $destination -}} not found</span></a>
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
{{- else if in ($_.Get "triads") (index (split .Destination ":") 0) -}}
|
{{- else if in ($_.Get "triads") (index (split .Destination ":") 0) -}}
|
||||||
{{- if $.Page.Site.GetPage (printf "/%s" (replace .Destination ":" "/")) -}}
|
{{- if $.Page.Site.GetPage (printf "/%s" (replace .Destination ":" "/")) -}}
|
||||||
{{- $session := $.Page.Site.GetPage (printf "/%s" (replace .Destination ":" "/")) -}}
|
{{- $session := $.Page.Site.GetPage (printf "/%s" (replace .Destination ":" "/")) -}}
|
||||||
{{ .Page.Scratch.Add "links" (slice $session) }}
|
{{ .Page.Scratch.Add "links" (slice $session) }}
|
||||||
{{- if not $text_link -}}
|
{{- if not $text_link -}}
|
||||||
<a 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 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>
|
||||||
{{- else -}}
|
{{- else -}}
|
||||||
<a 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 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>
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
{{- else -}}
|
{{- else -}}
|
||||||
<a href="{{- .Destination -}}/{{- if eq hugo.Environment "offline" -}}index.html{{- end -}}">{{- $text_link -}}⦚<span>{{- .Destination -}} not found</span></a>
|
<a href="{{- .Destination -}}/{{- if eq hugo.Environment "offline" -}}index.html{{- end -}}">{{- $text_link -}}⦚<span>{{- .Destination -}} not found</span></a>
|
||||||
|
|
|
@ -33,9 +33,19 @@
|
||||||
{{ with $scratch.mantle }}<a class="edit-button" target="_blank" href="{{ $.Site.Params.sandpointsGiteaUrl }}/_new/master/content/{{ index . 0 }}/">ADD_{{ index . 0 | upper }}</a>{{ end }}
|
{{ with $scratch.mantle }}<a class="edit-button" target="_blank" href="{{ $.Site.Params.sandpointsGiteaUrl }}/_new/master/content/{{ index . 0 }}/">ADD_{{ index . 0 | upper }}</a>{{ end }}
|
||||||
{{ with $scratch.crust }}<a class="edit-button" target="_blank" href="{{ $.Site.Params.sandpointsGiteaUrl }}/_new/master/content/{{ index . 0 }}/">ADD_{{ index . 0 | upper }}</a>{{ end }}
|
{{ with $scratch.crust }}<a class="edit-button" target="_blank" href="{{ $.Site.Params.sandpointsGiteaUrl }}/_new/master/content/{{ index . 0 }}/">ADD_{{ index . 0 | upper }}</a>{{ end }}
|
||||||
{{ if not $scratch.core }}<a class="edit-button" target="_blank" href="{{ $.Site.Params.sandpointsGiteaUrl }}/_new/master/content/{{ $currentDir }}">ADD_{{ substr $currentDir 0 -1 | upper }}</a>{{ end }}
|
{{ if not $scratch.core }}<a class="edit-button" target="_blank" href="{{ $.Site.Params.sandpointsGiteaUrl }}/_new/master/content/{{ $currentDir }}">ADD_{{ substr $currentDir 0 -1 | upper }}</a>{{ end }}
|
||||||
<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 }}/_edit/master/PUBLISH.trigger.mkd">PUBLISH</a>
|
||||||
<a class="edit-button" target="_blank" href="{{ $.Site.Params.sandpointsGiteaUrl }}"> ? </a>
|
<a class="edit-button" target="_blank" href="{{ $.Site.Params.sandpointsGiteaUrl }}"> ? </a>
|
||||||
</div>
|
</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 }}
|
{{ end }}
|
||||||
|
|
||||||
<div class="header">
|
<div class="header">
|
||||||
|
@ -43,6 +53,9 @@
|
||||||
<img src="/images/bibliotheke.svg" />
|
<img src="/images/bibliotheke.svg" />
|
||||||
</a>
|
</a>
|
||||||
<div class="breadcrumbs">
|
<div class="breadcrumbs">
|
||||||
|
{{ if and (not $scratch.depth) $.Site.Params.sandpointsHome }}
|
||||||
|
<a href="{{ with $.GetPage $.Site.Params.sandpointsHome }}{{ .RelPermalink }}{{ end }}{{ if eq hugo.Environment "offline" }}index.html{{ end }}"><span class="supt">{{ with $.GetPage $.Site.Params.sandpointsHome }}{{ substr .Title 0 1 }}</span><i>{{ substr .Title 1 }}</i></a>{{ end }}
|
||||||
|
{{ end }}
|
||||||
{{ if eq $scratch.depth "mantle" }}
|
{{ if eq $scratch.depth "mantle" }}
|
||||||
{{ with gt (len $scratch.is_in) 1 }}
|
{{ with gt (len $scratch.is_in) 1 }}
|
||||||
<div class="ddmenu">
|
<div class="ddmenu">
|
||||||
|
|
|
@ -9,6 +9,8 @@
|
||||||
{{ $scratch := $s.Get $currentFile }}
|
{{ $scratch := $s.Get $currentFile }}
|
||||||
|
|
||||||
{{ $sandnamePlural := (slice) }}
|
{{ $sandnamePlural := (slice) }}
|
||||||
|
{{ $sandnameSingular := "" }}
|
||||||
|
{{ $mentionLink := "" }}
|
||||||
|
|
||||||
<div class="{{ $scratch.depth | default "crust" }}title"><span class="supt">{{ substr $currentDir 0 -1 }}⁄</span>{{ .Title }}</div>
|
<div class="{{ $scratch.depth | default "crust" }}title"><span class="supt">{{ substr $currentDir 0 -1 }}⁄</span>{{ .Title }}</div>
|
||||||
|
|
||||||
|
@ -31,12 +33,17 @@
|
||||||
{{ $mentions := intersect $paramsKeys $sandnamePlural }}
|
{{ $mentions := intersect $paramsKeys $sandnamePlural }}
|
||||||
{{ range $mention := $mentions }}
|
{{ range $mention := $mentions }}
|
||||||
{{ range $k, $m := index $currentNode.Params $mention }}
|
{{ range $k, $m := index $currentNode.Params $mention }}
|
||||||
{{ $mentionLink := printf "/%s/%s" (substr $mention 0 -1) $m }}
|
{{ range $k, $v := $.Site.Data.sandpointsnamegraph }}
|
||||||
|
{{ if eq $v $mention }}
|
||||||
|
{{ $mentionLink = printf "/%s/%s" $k $m }}
|
||||||
|
{{ $sandnameSingular = $k }}
|
||||||
|
{{ end }}
|
||||||
|
{{ end }}
|
||||||
{{- with $.GetPage $mentionLink -}}
|
{{- with $.GetPage $mentionLink -}}
|
||||||
{{- with not $k -}}
|
{{- with not $k -}}
|
||||||
{{ $closeDivs = true }}
|
{{ $closeDivs = true }}
|
||||||
<div class="has hasauthors">
|
<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="hassup">{{ with (index $currentNode.Params $mention) }}{{ if gt (len (index $currentNode.Params $mention)) 1 }}{{ $mention }}{{ else }}{{ $sandnameSingular }}{{ end }}{{ end }}⁄</div>
|
||||||
<div class="afterhas">
|
<div class="afterhas">
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
<div class="crust">
|
<div class="crust">
|
||||||
|
@ -44,8 +51,8 @@
|
||||||
</div>
|
</div>
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
{{ end }}
|
|
||||||
{{- with $closeDivs -}}</div></div>{{ end }}
|
{{- with $closeDivs -}}</div></div>{{ end }}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
{{ if in .Page.Site.Params.sandpointsMentionedIn (substr $currentDir 0 -1) }}
|
{{ if in .Page.Site.Params.sandpointsMentionedIn (substr $currentDir 0 -1) }}
|
||||||
<div class="has hasmentionedin">
|
<div class="has hasmentionedin">
|
||||||
|
@ -92,4 +99,7 @@
|
||||||
|
|
||||||
{{ with .Page.Params.abstract }}<div class="abstract"><span class="supt">abstract⁄</span>{{ . | $.Page.RenderString | htmlUnescape | safeHTML }}</div>{{ end }}
|
{{ 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 -}}, {{- $v -}}{{- end -}}{{- end -}}{{- with $vld -}}</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 -}}, <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 }}
|
||||||
|
|
File diff suppressed because one or more lines are too long
|
@ -1,20 +1,61 @@
|
||||||
{
|
{
|
||||||
"syllabus": "syllabi",
|
|
||||||
"curriculum": "curriculums",
|
|
||||||
"notebook": "notebooks",
|
|
||||||
"book": "books",
|
|
||||||
"journal": "journals",
|
|
||||||
"topic": "topics",
|
|
||||||
"part": "parts",
|
|
||||||
"issue": "issues",
|
|
||||||
"tab": "tabs",
|
|
||||||
"experiment": "experiments",
|
|
||||||
"session": "sessions",
|
|
||||||
"chapter": "chapters",
|
|
||||||
"article": "articles",
|
|
||||||
"note": "notes",
|
|
||||||
"annex": "annexes",
|
"annex": "annexes",
|
||||||
|
"article": "articles",
|
||||||
|
"atlas": "atlases",
|
||||||
"author": "authors",
|
"author": "authors",
|
||||||
|
"book": "books",
|
||||||
|
"bundle": "bundles",
|
||||||
|
"cabin": "cabins",
|
||||||
|
"chapter": "chapters",
|
||||||
|
"compartment": "compartments",
|
||||||
|
"contributor": "contributors",
|
||||||
|
"curriculum": "curriculums",
|
||||||
|
"deck": "decks",
|
||||||
|
"doc": "docs",
|
||||||
|
"document": "documents",
|
||||||
"editor": "editors",
|
"editor": "editors",
|
||||||
"contributor": "contributors"
|
"entry": "entries",
|
||||||
|
"experiment": "experiments",
|
||||||
|
"factor": "factors",
|
||||||
|
"floor": "floors",
|
||||||
|
"fragment": "fragments",
|
||||||
|
"glossary": "glossaries",
|
||||||
|
"highlight": "highlights",
|
||||||
|
"house": "houses",
|
||||||
|
"issue": "issues",
|
||||||
|
"item": "items",
|
||||||
|
"journal": "journals",
|
||||||
|
"library": "libraries",
|
||||||
|
"librarian": "librarians",
|
||||||
|
"logbook": "logbooks",
|
||||||
|
"glassblower": "glassblowers",
|
||||||
|
"map": "maps",
|
||||||
|
"mirror": "mirrors",
|
||||||
|
"memory": "memories",
|
||||||
|
"note": "notes",
|
||||||
|
"notebook": "notebooks",
|
||||||
|
"part": "parts",
|
||||||
|
"person": "people",
|
||||||
|
"pin": "pins",
|
||||||
|
"print": "prints",
|
||||||
|
"record": "records",
|
||||||
|
"reflection": "reflections",
|
||||||
|
"repertorium": "repertoriums",
|
||||||
|
"research": "researches",
|
||||||
|
"room": "rooms",
|
||||||
|
"scribe": "scribes",
|
||||||
|
"section": "sections",
|
||||||
|
"series": "series",
|
||||||
|
"session": "sessions",
|
||||||
|
"shard": "shards",
|
||||||
|
"ship": "ships",
|
||||||
|
"spectre": "spectres",
|
||||||
|
"struggle": "struggles",
|
||||||
|
"syllabus": "syllabi",
|
||||||
|
"tab": "tabs",
|
||||||
|
"term":"terms",
|
||||||
|
"thing": "things",
|
||||||
|
"topic": "topics",
|
||||||
|
"toponym": "toponyms",
|
||||||
|
"voice": "voices"
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,7 +5,17 @@
|
||||||
{{ $_.Add "triads" $k }}
|
{{ $_.Add "triads" $k }}
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
|
|
||||||
{{- if strings.HasPrefix .Destination "bib:" -}}
|
{{- 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:" -}}
|
||||||
{{- $destination := (substr .Destination 4) -}}
|
{{- $destination := (substr .Destination 4) -}}
|
||||||
{{- $c_prefix := .Page.Site.Params.sandpointsCatalogPrefix | default "/library/" -}}
|
{{- $c_prefix := .Page.Site.Params.sandpointsCatalogPrefix | default "/library/" -}}
|
||||||
{{- if index $.Page.Site.Data.books.catalog $destination -}}
|
{{- if index $.Page.Site.Data.books.catalog $destination -}}
|
||||||
|
@ -17,21 +27,21 @@
|
||||||
{{ end }}
|
{{ end }}
|
||||||
{{ .Page.Scratch.Add "bibs" (slice (slice $bibhref $bibtitle)) }}
|
{{ .Page.Scratch.Add "bibs" (slice (slice $bibhref $bibtitle)) }}
|
||||||
{{- if not $text_link -}}
|
{{- if not $text_link -}}
|
||||||
<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>
|
<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 -}}
|
{{- 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>
|
<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>
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
{{- else -}}
|
{{- else -}}
|
||||||
<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>
|
<a href="{{- $c_prefix | safeURL -}}BROWSE_LIBRARY.html#/book/{{- $destination -}}"{{- with .Title}} title="{{- . -}}"{{- end -}}>{{- $text_link -}}⦚<span>bib:{{- $destination -}} not found</span></a>
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
{{- else if in ($_.Get "triads") (index (split .Destination ":") 0) -}}
|
{{- else if in ($_.Get "triads") (index (split .Destination ":") 0) -}}
|
||||||
{{- if $.Page.Site.GetPage (printf "/%s" (replace .Destination ":" "/")) -}}
|
{{- if $.Page.Site.GetPage (printf "/%s" (replace .Destination ":" "/")) -}}
|
||||||
{{- $session := $.Page.Site.GetPage (printf "/%s" (replace .Destination ":" "/")) -}}
|
{{- $session := $.Page.Site.GetPage (printf "/%s" (replace .Destination ":" "/")) -}}
|
||||||
{{ .Page.Scratch.Add "links" (slice $session) }}
|
{{ .Page.Scratch.Add "links" (slice $session) }}
|
||||||
{{- if not $text_link -}}
|
{{- if not $text_link -}}
|
||||||
<a 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 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>
|
||||||
{{- else -}}
|
{{- else -}}
|
||||||
<a 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 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>
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
{{- else -}}
|
{{- else -}}
|
||||||
<a href="{{- .Destination -}}/{{- if eq hugo.Environment "offline" -}}index.html{{- end -}}">{{- $text_link -}}⦚<span>{{- .Destination -}} not found</span></a>
|
<a href="{{- .Destination -}}/{{- if eq hugo.Environment "offline" -}}index.html{{- end -}}">{{- $text_link -}}⦚<span>{{- .Destination -}} not found</span></a>
|
||||||
|
|
|
@ -2,12 +2,12 @@
|
||||||
|
|
||||||
<html lang="{{ with .Site.LanguageCode }}{{ . }}{{ else }}en-us{{ end }}">
|
<html lang="{{ with .Site.LanguageCode }}{{ . }}{{ else }}en-us{{ end }}">
|
||||||
<head>
|
<head>
|
||||||
{{- partialCached "head.html" . -}}
|
{{- partial "head.html" . -}}
|
||||||
<title>{{- .Title }} - {{ .Site.Title -}}</title>
|
<title>{{- .Title }} - {{ .Site.Title -}}</title>
|
||||||
{{- partialCached "sandpointjs.html" . .RelPermalink -}}
|
{{- partialCached "sandpointjs.html" . .RelPermalink -}}
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
{{- block "singlebody" . }}{{- end }}
|
{{- block "singlebody" . }}{{- end -}}
|
||||||
{{- partialCached "footer.html" . -}}
|
{{- partialCached "footer.html" . -}}
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|
|
@ -6,6 +6,9 @@
|
||||||
{{ $currentDir = .Dir }}
|
{{ $currentDir = .Dir }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
{{ $currentFile := (printf "/%s" .File) }}
|
{{ $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 }} {{with $currentDir}}({{ . }}){{ end }}</div>
|
||||||
|
|
||||||
|
@ -14,12 +17,12 @@
|
||||||
{{ range $p := .Site.RegularPages }}
|
{{ range $p := .Site.RegularPages }}
|
||||||
{{ $scratch := $s.Get (printf "/%s" $p.File) }}
|
{{ $scratch := $s.Get (printf "/%s" $p.File) }}
|
||||||
{{ if eq $scratch.depth "core" }}
|
{{ 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></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><a class="svedit" href="{{- printf "%sindex.html#%s" $editFilePath $p.File.UniqueID -}}">[EDIT]</a></div>
|
||||||
{{ range $coreKid := $scratch.has_children }}
|
{{ 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></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><a class="svedit" href="{{- printf "%sindex.html#%s" $editFilePath $coreKid.File.UniqueID -}}">[EDIT]</a></div>
|
||||||
{{ $scratchCKid := $s.Get (printf "/%s" $coreKid.File) }}
|
{{ $scratchCKid := $s.Get (printf "/%s" $coreKid.File) }}
|
||||||
{{ range $mantleKid := $scratchCKid.has_children }}
|
{{ 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></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><a class="svedit" href="{{- printf "%sindex.html#%s" $editFilePath $mantleKid.File.UniqueID -}}">[EDIT]</a></div></div>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
</div>
|
</div>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
@ -30,6 +33,6 @@
|
||||||
{{ end }}
|
{{ end }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
{{ range $noTriad }}
|
{{ 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></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>{{ 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>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
|
|
@ -1,9 +1,14 @@
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
|
|
||||||
<html lang="{{ with .Site.LanguageCode }}{{ . }}{{ else }}en-us{{ end }}">
|
<html lang="{{ with .Site.LanguageCode }}{{ . }}{{ else }}en-us{{ end }}">
|
||||||
<head>
|
<head>
|
||||||
<title>{{- .Title }} - {{ .Site.Title -}}</title>
|
<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>
|
</head>
|
||||||
<body>
|
<body>{{- block "main" . -}}{{- end -}}</body>
|
||||||
{{ block "edit" . }}{{ end }}
|
|
||||||
</body>
|
|
||||||
</html>
|
</html>
|
||||||
|
|
|
@ -1,10 +1,2 @@
|
||||||
{{ define "edit" }}
|
{{ define "main" }}
|
||||||
{{ range (readDir ".") }}
|
|
||||||
{{ if .IsDir }}
|
|
||||||
<p>Dir: {{ .Name }}</p>
|
|
||||||
{{ partial "readdir.html" .Name }}
|
|
||||||
{{ else }}
|
|
||||||
<p>File: {{ .Name }}
|
|
||||||
{{ end }}
|
|
||||||
{{ end }}
|
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
|
1
_vendor/git.sandpoints.org/Drawwell/SandpointsTheme/layouts/edit/single.html
generated
Normal file
1
_vendor/git.sandpoints.org/Drawwell/SandpointsTheme/layouts/edit/single.html
generated
Normal file
|
@ -0,0 +1 @@
|
||||||
|
{{- define "main" -}}{{- end -}}
|
|
@ -1 +1,20 @@
|
||||||
{{ define "main" }}SECTIONS=[{{ range .Site.Sections }}{"section": "{{ with .File }}{{ trim .Dir "/" }}{{ end }}", "items": [{{ range .Pages }}"{{ .File.BaseFileName }}", {{ end }}]}, {{ end }}];{{ end }}
|
{{- 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 }}
|
||||||
|
|
|
@ -11,9 +11,20 @@
|
||||||
<meta name="keywords" content="{{ delimit .Keywords "," }}" />
|
<meta name="keywords" content="{{ delimit .Keywords "," }}" />
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
|
||||||
{{ if .Params.Author }}
|
{{ if .Params.editors }}
|
||||||
<meta name="author" content="{{ .Params.Author }}" />
|
{{ range .Params.editors }}
|
||||||
|
{{ $e := $.GetPage (printf "editor/%s" .) }}
|
||||||
|
<meta name="editor" content="{{ $e.Title }}" />
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
{{ 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/opengraph.html" . }}
|
||||||
{{ template "_internal/twitter_cards.html" . }}
|
{{ template "_internal/twitter_cards.html" . }}
|
||||||
|
@ -27,9 +38,9 @@
|
||||||
<link rel="mask-icon" href="/safari-pinned-tab.svg" color="#996561">
|
<link rel="mask-icon" href="/safari-pinned-tab.svg" color="#996561">
|
||||||
|
|
||||||
{{ if eq hugo.Environment "dev" }}
|
{{ if eq hugo.Environment "dev" }}
|
||||||
{{ $style := resources.Get "css/site.css" | postCSS (dict "config" "assets/css/postcss.config.js") | minify }}
|
{{ $style := resources.Get "css/site.css" | resources.PostCSS (dict "config" "assets/css/postcss.config.js") | minify }}
|
||||||
<link rel="stylesheet" href="{{ $style.RelPermalink }}" />
|
<link rel="stylesheet" href="{{ $style.RelPermalink }}" />
|
||||||
{{ $style := resources.Get "css/player.css" | postCSS (dict "config" "assets/css/postcss.config.js") | minify }}
|
{{ $style := resources.Get "css/player.css" | resources.PostCSS (dict "config" "assets/css/postcss.config.js") | minify }}
|
||||||
<link rel="stylesheet" href="{{ $style.RelPermalink }}" />
|
<link rel="stylesheet" href="{{ $style.RelPermalink }}" />
|
||||||
{{ else }}
|
{{ else }}
|
||||||
<link rel="stylesheet" href="/css/site.min.css" />
|
<link rel="stylesheet" href="/css/site.min.css" />
|
||||||
|
|
|
@ -33,9 +33,19 @@
|
||||||
{{ with $scratch.mantle }}<a class="edit-button" target="_blank" href="{{ $.Site.Params.sandpointsGiteaUrl }}/_new/master/content/{{ index . 0 }}/">ADD_{{ index . 0 | upper }}</a>{{ end }}
|
{{ with $scratch.mantle }}<a class="edit-button" target="_blank" href="{{ $.Site.Params.sandpointsGiteaUrl }}/_new/master/content/{{ index . 0 }}/">ADD_{{ index . 0 | upper }}</a>{{ end }}
|
||||||
{{ with $scratch.crust }}<a class="edit-button" target="_blank" href="{{ $.Site.Params.sandpointsGiteaUrl }}/_new/master/content/{{ index . 0 }}/">ADD_{{ index . 0 | upper }}</a>{{ end }}
|
{{ with $scratch.crust }}<a class="edit-button" target="_blank" href="{{ $.Site.Params.sandpointsGiteaUrl }}/_new/master/content/{{ index . 0 }}/">ADD_{{ index . 0 | upper }}</a>{{ end }}
|
||||||
{{ if not $scratch.core }}<a class="edit-button" target="_blank" href="{{ $.Site.Params.sandpointsGiteaUrl }}/_new/master/content/{{ $currentDir }}">ADD_{{ substr $currentDir 0 -1 | upper }}</a>{{ end }}
|
{{ if not $scratch.core }}<a class="edit-button" target="_blank" href="{{ $.Site.Params.sandpointsGiteaUrl }}/_new/master/content/{{ $currentDir }}">ADD_{{ substr $currentDir 0 -1 | upper }}</a>{{ end }}
|
||||||
<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 }}/_edit/master/PUBLISH.trigger.mkd">PUBLISH</a>
|
||||||
<a class="edit-button" target="_blank" href="{{ $.Site.Params.sandpointsGiteaUrl }}"> ? </a>
|
<a class="edit-button" target="_blank" href="{{ $.Site.Params.sandpointsGiteaUrl }}"> ? </a>
|
||||||
</div>
|
</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 }}
|
{{ end }}
|
||||||
|
|
||||||
<div class="header">
|
<div class="header">
|
||||||
|
@ -43,6 +53,9 @@
|
||||||
<img src="/images/bibliotheke.svg" />
|
<img src="/images/bibliotheke.svg" />
|
||||||
</a>
|
</a>
|
||||||
<div class="breadcrumbs">
|
<div class="breadcrumbs">
|
||||||
|
{{ if and (not $scratch.depth) $.Site.Params.sandpointsHome }}
|
||||||
|
<a href="{{ with $.GetPage $.Site.Params.sandpointsHome }}{{ .RelPermalink }}{{ end }}{{ if eq hugo.Environment "offline" }}index.html{{ end }}"><span class="supt">{{ with $.GetPage $.Site.Params.sandpointsHome }}{{ substr .Title 0 1 }}</span><i>{{ substr .Title 1 }}</i></a>{{ end }}
|
||||||
|
{{ end }}
|
||||||
{{ if eq $scratch.depth "mantle" }}
|
{{ if eq $scratch.depth "mantle" }}
|
||||||
{{ with gt (len $scratch.is_in) 1 }}
|
{{ with gt (len $scratch.is_in) 1 }}
|
||||||
<div class="ddmenu">
|
<div class="ddmenu">
|
||||||
|
|
|
@ -8,6 +8,8 @@
|
||||||
{{ $currentFile := (printf "/%s" .File) }}
|
{{ $currentFile := (printf "/%s" .File) }}
|
||||||
{{ $scratch := $s.Get $currentFile }}
|
{{ $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 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="grid">
|
||||||
|
@ -64,7 +66,13 @@
|
||||||
<div class="{{ $scratch.child_depth }} crustoc">
|
<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>
|
<a class="toc" href="#ph-{{ .File.UniqueID }}"><span><span class="back">{{ .Title }} {{with $authors}}({{ $authors }}){{ end }}</span></span></a>
|
||||||
</div>
|
</div>
|
||||||
|
{{ if gt (len .Title) (len $longestTitle) }}
|
||||||
|
{{ $longestTitle = .Title }}
|
||||||
{{ end }}
|
{{ 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>
|
</div></div>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
|
||||||
|
|
|
@ -5,6 +5,9 @@
|
||||||
<p>_Dir: {{ $currentName }}</p>
|
<p>_Dir: {{ $currentName }}</p>
|
||||||
{{ partial "readdir.html" $currentName }}
|
{{ partial "readdir.html" $currentName }}
|
||||||
{{ else }}
|
{{ else }}
|
||||||
<p>_File: {{ $currentName }}
|
{{ if eq (path.Ext .Name) ".md" }}
|
||||||
|
{{ $f := readFile $currentName }}
|
||||||
|
<textarea wrap="off" col="108" row="48 ">{{ $f }}</textarea>
|
||||||
|
{{ end }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
<script type="text/javascript">var relPathDepth = {{- .RelPermalink | strings.Count "/" -}};</script>
|
<script type="text/javascript">var relPathDepth = {{- .RelPermalink | strings.Count "/" -}};var sandpointsPageId = "{{- with .File -}}{{- .UniqueID -}}{{- end -}}";</script>
|
||||||
{{ $sjsopts := dict "targetPath" "js/sandpoints.js" "minify" "true"}}
|
{{ $sjsopts := dict "targetPath" "js/sandpoints.js" "minify" "true"}}
|
||||||
{{ $sjs := resources.Get "js/sandpoints.js" | js.Build $sjsopts }}
|
{{ $sjs := resources.Get "js/sandpoints.js" | js.Build $sjsopts }}
|
||||||
<script defer src='{{ $sjs.RelPermalink }}' type="application/javascript"></script>
|
<script defer src='{{ $sjs.RelPermalink }}' type="application/javascript"></script>
|
||||||
|
|
|
@ -9,6 +9,8 @@
|
||||||
{{ $scratch := $s.Get $currentFile }}
|
{{ $scratch := $s.Get $currentFile }}
|
||||||
|
|
||||||
{{ $sandnamePlural := (slice) }}
|
{{ $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="{{ $scratch.depth | default "crust" }}title"><span class="supt">{{ substr $currentDir 0 -1 }}⁄{{ substr .Title 0 1 }}</span>{{ substr .Title 1 }}</div></div>
|
||||||
|
|
||||||
|
@ -31,12 +33,17 @@
|
||||||
{{ $mentions := intersect $paramsKeys $sandnamePlural }}
|
{{ $mentions := intersect $paramsKeys $sandnamePlural }}
|
||||||
{{ range $mention := $mentions }}
|
{{ range $mention := $mentions }}
|
||||||
{{ range $k, $m := index $currentNode.Params $mention }}
|
{{ range $k, $m := index $currentNode.Params $mention }}
|
||||||
{{ $mentionLink := printf "/%s/%s" (substr $mention 0 -1) $m }}
|
{{ range $k, $v := $.Site.Data.sandpointsnamegraph }}
|
||||||
|
{{ if eq $v $mention }}
|
||||||
|
{{ $mentionLink = printf "/%s/%s" $k $m }}
|
||||||
|
{{ $sandnameSingular = $k }}
|
||||||
|
{{ end }}
|
||||||
|
{{ end }}
|
||||||
{{- with $.GetPage $mentionLink -}}
|
{{- with $.GetPage $mentionLink -}}
|
||||||
{{- with not $k -}}
|
{{- with not $k -}}
|
||||||
{{ $closeDivs = true }}
|
{{ $closeDivs = true }}
|
||||||
<div class="has hasauthors">
|
<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="hassup">{{ with (index $currentNode.Params $mention) }}{{ if gt (len (index $currentNode.Params $mention)) 1 }}{{ $mention }}{{ else }}{{ $sandnameSingular }}{{ end }}{{ end }}⁄</div>
|
||||||
<div class="afterhas">
|
<div class="afterhas">
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
<div class="crust">
|
<div class="crust">
|
||||||
|
@ -44,8 +51,8 @@
|
||||||
</div>
|
</div>
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
{{ end }}
|
|
||||||
{{- with $closeDivs -}}</div></div>{{ end }}
|
{{- with $closeDivs -}}</div></div>{{ end }}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
{{ if in .Page.Site.Params.sandpointsMentionedIn (substr $currentDir 0 -1) }}
|
{{ if in .Page.Site.Params.sandpointsMentionedIn (substr $currentDir 0 -1) }}
|
||||||
<div class="has hasmentionedin">
|
<div class="has hasmentionedin">
|
||||||
|
@ -92,4 +99,7 @@
|
||||||
|
|
||||||
{{ with .Page.Params.abstract }}<div class="abstract"><span class="supt">abstract⁄</span>{{ . | $.Page.RenderString | htmlUnescape | safeHTML }}</div>{{ end }}
|
{{ 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 -}}, {{- $v -}}{{- end -}}{{- end -}}{{- with $vld -}}</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 -}}, <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 }}
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
<html lang="{{ with .Site.LanguageCode }}{{ . }}{{- else -}}en-us{{- end -}}">
|
<html lang="{{ with .Site.LanguageCode }}{{ . }}{{- else -}}en-us{{- end -}}">
|
||||||
<head>
|
<head>
|
||||||
{{- partialCached "head.html" . -}}
|
{{- partial "head.html" . -}}
|
||||||
{{- partial "pagedjs.html" . -}}
|
{{- partial "pagedjs.html" . -}}
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
|
|
12
_vendor/git.sandpoints.org/Drawwell/SandpointsTheme/layouts/taxonomy/baseof.html
generated
Normal file
12
_vendor/git.sandpoints.org/Drawwell/SandpointsTheme/layouts/taxonomy/baseof.html
generated
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
<!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>
|
23
_vendor/git.sandpoints.org/Drawwell/SandpointsTheme/layouts/taxonomy/list.html
generated
Normal file
23
_vendor/git.sandpoints.org/Drawwell/SandpointsTheme/layouts/taxonomy/list.html
generated
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
{{ 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 }}
|
|
@ -200,7 +200,8 @@
|
||||||
bottom: 0
|
bottom: 0
|
||||||
}
|
}
|
||||||
|
|
||||||
.crustoc::after {
|
a.toc::before {
|
||||||
|
direction: rtl;
|
||||||
content: " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . "" . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . "" . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . "" . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ";
|
content: " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . "" . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . "" . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . "" . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ";
|
||||||
line-height: 0;
|
line-height: 0;
|
||||||
height: 1px;
|
height: 1px;
|
||||||
|
@ -233,4 +234,9 @@
|
||||||
ol[data-split-from] {
|
ol[data-split-from] {
|
||||||
padding-left: 0.5rem;
|
padding-left: 0.5rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.longesttitle {
|
||||||
|
visibility: hidden;
|
||||||
|
cursor: default;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
2
_vendor/git.sandpoints.org/Drawwell/SandpointsTheme/static/css/site.min.css
generated
vendored
2
_vendor/git.sandpoints.org/Drawwell/SandpointsTheme/static/css/site.min.css
generated
vendored
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load diff
BIN
_vendor/git.sandpoints.org/Drawwell/SandpointsTheme/static/logo/800x418.png
generated
Normal file
BIN
_vendor/git.sandpoints.org/Drawwell/SandpointsTheme/static/logo/800x418.png
generated
Normal file
Binary file not shown.
After Width: | Height: | Size: 21 KiB |
BIN
_vendor/git.sandpoints.org/Drawwell/SandpointsTheme/static/logo/800x800.png
generated
Normal file
BIN
_vendor/git.sandpoints.org/Drawwell/SandpointsTheme/static/logo/800x800.png
generated
Normal file
Binary file not shown.
After Width: | Height: | Size: 37 KiB |
145
_vendor/git.sandpoints.org/Drawwell/SandpointsTheme/static/logo/index.html
generated
Normal file
145
_vendor/git.sandpoints.org/Drawwell/SandpointsTheme/static/logo/index.html
generated
Normal file
|
@ -0,0 +1,145 @@
|
||||||
|
<!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>
|
|
@ -1 +1 @@
|
||||||
# git.sandpoints.org/Drawwell/SandpointsTheme v0.0.0-20210314123921-28595383157a
|
# git.sandpoints.org/Drawwell/SandpointsTheme v0.0.0-20221212163146-fea2002f3205
|
||||||
|
|
|
@ -10,7 +10,6 @@ disableKinds = ["RSS", "sitemap"]
|
||||||
[params]
|
[params]
|
||||||
description = "Some description should land here..."
|
description = "Some description should land here..."
|
||||||
images = ["/UNS-logo.png"]
|
images = ["/UNS-logo.png"]
|
||||||
title = "Dotawo Journal"
|
|
||||||
sandpointsGiteaUrl = "https://git.sandpoints.org/UnionForNubianStudies/Dotawo"
|
sandpointsGiteaUrl = "https://git.sandpoints.org/UnionForNubianStudies/Dotawo"
|
||||||
sandpointsCatalogPrefix = "/library/"
|
sandpointsCatalogPrefix = "/library/"
|
||||||
sandpointsCatalogName = "dotawo"
|
sandpointsCatalogName = "dotawo"
|
||||||
|
@ -19,7 +18,7 @@ disableKinds = ["RSS", "sitemap"]
|
||||||
[outputFormats]
|
[outputFormats]
|
||||||
[outputFormats.js]
|
[outputFormats.js]
|
||||||
isPlainText = true
|
isPlainText = true
|
||||||
mediaType = "application/javascript"
|
mediaType = "text/javascript"
|
||||||
|
|
||||||
[outputs]
|
[outputs]
|
||||||
list = ["html", "js"]
|
list = ["html", "js"]
|
||||||
|
|
|
@ -47,27 +47,27 @@ with the sole focus on men. The participation of women and their
|
||||||
experiences are rarely addressed.[^11] War and violence in ancient Sudan
|
experiences are rarely addressed.[^11] War and violence in ancient Sudan
|
||||||
are fields still largely dominated by male authors.[^12] This
|
are fields still largely dominated by male authors.[^12] This
|
||||||
androcentric perspective rarely takes into account gender as a social
|
androcentric perspective rarely takes into account gender as a social
|
||||||
category, and tends to implicitly a focus only on combatant men. As a
|
category and tends to implicitly focus only on combatant men. As a
|
||||||
result, we are left with numerous valuable contributions on Kushite
|
result, we are left with numerous valuable contributions on Kushite
|
||||||
representations of war, enemies, weaponry etc. However, a gender
|
representations of war, enemies, weaponry etc. However, a gender
|
||||||
perspective is lacking in almost all of them. This does not mean that
|
perspective is lacking in almost all of them. This does not mean that
|
||||||
the effort to find women in such contexts or to relate them to women is
|
the effort to find women in such contexts or to relate these contexts to women is
|
||||||
that which is lacking, although this is true too. What is missing is a
|
that which is lacking, although this is true too. What is missing, is a
|
||||||
perspective on both masculinity and femininity as socio-culturally
|
perspective on both masculinity and femininity as socio-culturally
|
||||||
determined categories coming from a specific gender system. Until
|
determined categories coming from a specific gender system. Until
|
||||||
recently, this was also the case in Egyptology. However, some recent
|
recently, this was also the case in Egyptology. However, some recent
|
||||||
studies focusing on war in ancient Egypt have shown the potential of
|
studies focusing on war in ancient Egypt have shown the potential of
|
||||||
implementing ideas and concepts coming from gender studies.[^13] One of
|
implementing ideas and concepts coming from gender studies.[^13] One of
|
||||||
these concepts is the frames of war. The concept of the frames of war
|
these concepts is the 'frames of war'. The concept of the frames of war
|
||||||
was developed by American philosopher Judith Butler, who demonstrated
|
was developed by American philosopher Judith Butler, who demonstrated
|
||||||
the way some political forces frame violence in the modern media. Frames
|
the way some political forces frame violence in modern media. Frames
|
||||||
of war are operations of power which seek to contain, convey, and
|
of war are operations of power which seek to contain, convey, and
|
||||||
determine what is seen and what is real.[^14] They are the ways of
|
determine what is seen and what is real.[^14] They are the ways of
|
||||||
selectively carving up experience as essential to the conduct of
|
selectively carving up experience as essential to the conduct of
|
||||||
war.[^15] Butler argues that, by regulating perspective in addition to
|
war.[^15] Butler argues that, by regulating perspective in addition to
|
||||||
content, state authorities are clearly interested in controlling the
|
content, state authorities are clearly interested in controlling the
|
||||||
visual modes of participation in war.[^16] The study by Butler on frames
|
visual modes of participation in war.[^16] The study by Butler on frames
|
||||||
of war is essential for our understanding of how the modern media
|
of war is essential for our understanding of how modern media
|
||||||
creates the experience of war, whether and where they find a place for
|
creates the experience of war, whether and where they find a place for
|
||||||
non-combatants, and how victory and defeat are presented. In this
|
non-combatants, and how victory and defeat are presented. In this
|
||||||
process, different genders are represented as differently positioned,
|
process, different genders are represented as differently positioned,
|
||||||
|
@ -81,10 +81,10 @@ Napatan and Meroitic periods. I will first focus on non-combatants in
|
||||||
texts, by analysing the attestations of prisoners of war of differing
|
texts, by analysing the attestations of prisoners of war of differing
|
||||||
ages and genders. The lists of spoils of war demonstrate a structure
|
ages and genders. The lists of spoils of war demonstrate a structure
|
||||||
based on a hierarchy based on status, age, and gender intersectionality.
|
based on a hierarchy based on status, age, and gender intersectionality.
|
||||||
The term intersectionality is one of the central tenets of black
|
Intersectionality is one of the central tenets of black
|
||||||
feminist theory. It is based on the fact that oppression is not
|
feminist theory. It is based on the fact that oppression is not
|
||||||
monocausal, as for example in the USA it is not based either on race or
|
monocausal, as for example in the USA it is not based either on race or
|
||||||
on gender. Rather, an intersection of race and gender makes some more
|
on gender. Rather, an intersection of race and gender makes some individuals more
|
||||||
oppressed or oppressed in a different way than others.[^18] This
|
oppressed or oppressed in a different way than others.[^18] This
|
||||||
analysis of the attestations of non-combatants is followed by an
|
analysis of the attestations of non-combatants is followed by an
|
||||||
analysis of a currently unique representation of women and children as
|
analysis of a currently unique representation of women and children as
|
||||||
|
@ -94,12 +94,12 @@ texts in order to demonstrate how gender was used to structure hierarchy
|
||||||
and to position the Kushite king as masculine and his enemies as
|
and to position the Kushite king as masculine and his enemies as
|
||||||
feminine. I argue that, in this way, gender framed both relations in war
|
feminine. I argue that, in this way, gender framed both relations in war
|
||||||
and hierarchies within the society of ancient Sudan. I also discuss
|
and hierarchies within the society of ancient Sudan. I also discuss
|
||||||
evidence for the participation of Kushite royal women in war, and stress
|
evidence for the participation of Kushite royal women in war and stress
|
||||||
that the sources at our disposal are providing us with an outsider
|
that the sources at our disposal are providing us with an outsider
|
||||||
(Graeco-Roman) perspective, rather than a local perspective. Finally, I
|
(Graeco-Roman) perspective rather than a local perspective. Finally, I
|
||||||
discuss the specifics of scenes in which Meroitic royal women are
|
discuss the specifics of scenes in which Meroitic royal women are
|
||||||
smiting enemies by comparing these scenes to others from ancient Egypt.
|
smiting enemies by comparing these scenes to others from ancient Egypt.
|
||||||
I argue that the observed differences are related to a different
|
I argue that the observed differences relate to a different
|
||||||
understanding of the relation between kingship and queenship in these
|
understanding of the relation between kingship and queenship in these
|
||||||
two societies.
|
two societies.
|
||||||
|
|
||||||
|
@ -107,7 +107,7 @@ two societies.
|
||||||
|
|
||||||
## Textual Evidence
|
## Textual Evidence
|
||||||
|
|
||||||
The taking of prisoners of war is a well attested ancient war
|
The taking of prisoners of war is a well-attested ancient war
|
||||||
practice.[^19] Enemies of different gender, age, and status were also
|
practice.[^19] Enemies of different gender, age, and status were also
|
||||||
imprisoned during war in ancient Nubia. Although the practice surely
|
imprisoned during war in ancient Nubia. Although the practice surely
|
||||||
must have been older, the first textual attestations come from the reign
|
must have been older, the first textual attestations come from the reign
|
||||||
|
@ -128,8 +128,8 @@ land.[^22] A granite stela from Karnak (line 3), attributed to Taharqa
|
||||||
by Donald B. Redford, also mentions children of rulers, and later (lines
|
by Donald B. Redford, also mentions children of rulers, and later (lines
|
||||||
11-13) refers to the settling of a population with its cattle in
|
11-13) refers to the settling of a population with its cattle in
|
||||||
villages. This possibly refers to the settlement of the prisoners of
|
villages. This possibly refers to the settlement of the prisoners of
|
||||||
war, among which were the above-mentioned children.[^23] A more
|
war among which the above-mentioned children.[^23] A more
|
||||||
securely-dated example of men and women (total: 544) seemingly presented
|
securely-dated example of men and women (total: 544), seemingly presented
|
||||||
as spoils of war during the reign of Taharqa, and enumerated according
|
as spoils of war during the reign of Taharqa, and enumerated according
|
||||||
to ethnonyms or toponyms, can be found in his long inscription from
|
to ethnonyms or toponyms, can be found in his long inscription from
|
||||||
Sanam.[^24]
|
Sanam.[^24]
|
||||||
|
@ -153,10 +153,10 @@ BC, the king states that he gave a total of 110 men and women to Amun of
|
||||||
Napata.[^29] As noted by Jeremy Pope, there is no reason to impose here
|
Napata.[^29] As noted by Jeremy Pope, there is no reason to impose here
|
||||||
an artificial distinction between a donation text and a record of
|
an artificial distinction between a donation text and a record of
|
||||||
war.[^30] In fact, there is also no such division in ancient Egyptian
|
war.[^30] In fact, there is also no such division in ancient Egyptian
|
||||||
records of war, and the Kushite records of war bear many similarities to
|
records of war and the Kushite records of war bear many similarities to
|
||||||
those of ancient Egypt, especially when lists of spoils of war are
|
those of ancient Egypt, especially when lists of spoils of war are
|
||||||
concerned. Nastasen also claims (lines 46-49) that he captured Ayonku,
|
concerned. Nastasen also claims (lines 46-49) that he captured Ayonku,
|
||||||
the ruler connected to the rebels, and that he took all the women, all
|
the ruler connected to the rebels and that he took all the women, all
|
||||||
the cattle, and much gold. The list mentions 2,236 women.[^31] Compared
|
the cattle, and much gold. The list mentions 2,236 women.[^31] Compared
|
||||||
to the number of men and women given to the temple of Amun at Napata,
|
to the number of men and women given to the temple of Amun at Napata,
|
||||||
this is a significantly larger number, which indicates that a majority
|
this is a significantly larger number, which indicates that a majority
|
||||||
|
@ -178,10 +178,10 @@ men, women and children. No difference is made between male and female
|
||||||
children. This demonstrates an intersectional hierarchy based on status,
|
children. This demonstrates an intersectional hierarchy based on status,
|
||||||
gender, and age. The enemy ruler was the most valued, then came enemy
|
gender, and age. The enemy ruler was the most valued, then came enemy
|
||||||
men, women and children, in that same order. An interesting question is
|
men, women and children, in that same order. An interesting question is
|
||||||
if this intersectional hierarchy mirrors that of the ancient Sudanese
|
if this intersectional hierarchy mirrors that of ancient Sudanese
|
||||||
society, or if it was only imposed on its enemies. That male and female
|
society or if it was only imposed on its enemies. That male and female
|
||||||
prisoners of war together with children, including even those of the
|
prisoners of war feature together with children, including even those of
|
||||||
foreign rulers, were donated to the temples, comes as no surprise. The
|
foreign rulers donated to temples, comes as no surprise. The
|
||||||
individual temples of Amun in Kush also functioned as centres of
|
individual temples of Amun in Kush also functioned as centres of
|
||||||
territorial government and redistribution.[^37] Some lines in the Annals
|
territorial government and redistribution.[^37] Some lines in the Annals
|
||||||
of Nastasen refer to imprisoned women in a rhetorical manner, stating
|
of Nastasen refer to imprisoned women in a rhetorical manner, stating
|
||||||
|
@ -190,7 +190,7 @@ providing a number like in earlier sources.
|
||||||
|
|
||||||
Currently, the textual evidence written in Merotic script is very
|
Currently, the textual evidence written in Merotic script is very
|
||||||
scarce, and our current understanding of the language is not on a level
|
scarce, and our current understanding of the language is not on a level
|
||||||
which would allow a detailed reading of most of the preserved texts.
|
which allows for a detailed reading for most preserved texts.
|
||||||
Nevertheless, several experts in Meroitic language and script have
|
Nevertheless, several experts in Meroitic language and script have
|
||||||
recognized the mentioning of prisoners of war in the Hamadab Stela of
|
recognized the mentioning of prisoners of war in the Hamadab Stela of
|
||||||
Amanirenas and Akinidad (British Museum 1650) from the late 1st
|
Amanirenas and Akinidad (British Museum 1650) from the late 1st
|
||||||
|
@ -201,8 +201,8 @@ Aswan (Meroitic "Sewane"), Qasr Ibrim (Meroitic "Pedeme"), and Napata
|
||||||
("Npte"). According to Rilly, the stela also mentions the beginning of
|
("Npte"). According to Rilly, the stela also mentions the beginning of
|
||||||
the war in its 3rd and 4th lines: "the Tmey have enslaved all the men,
|
the war in its 3rd and 4th lines: "the Tmey have enslaved all the men,
|
||||||
all the women, all the girls and all the boys".[^39] Interestingly, if
|
all the women, all the girls and all the boys".[^39] Interestingly, if
|
||||||
Rilly´s reading is correct, this would mean that when Meroitic folk are
|
Rilly´s reading is correct, this would mean that when Meroitic folk were
|
||||||
taken as prisoners by enemies, a gender differentiation is made even for
|
taken as prisoners by enemies, a gender differentiation was made among
|
||||||
children and/or adolescents. The following discussion will focus on the
|
children and/or adolescents. The following discussion will focus on the
|
||||||
possible iconographic evidence of the conflict between Meroe and Rome.
|
possible iconographic evidence of the conflict between Meroe and Rome.
|
||||||
|
|
||||||
|
@ -219,76 +219,76 @@ Garstang first investigated the temple in 1910-1911 together with
|
||||||
Archibald H. Sayce. The temple M250 was investigated further by
|
Archibald H. Sayce. The temple M250 was investigated further by
|
||||||
Friedrich Hinkel from 1984 to 1985. He dated it to the late 1st century
|
Friedrich Hinkel from 1984 to 1985. He dated it to the late 1st century
|
||||||
BC and early 1st century AD because of the royal cartouches of Akinidad
|
BC and early 1st century AD because of the royal cartouches of Akinidad
|
||||||
found on fallen blocks of the cella north wall.[^40] The earliest temple
|
found on fallen blocks of the cella's north wall.[^40] The earliest temple
|
||||||
on the site, which is northwest of M250, had probably already been built
|
on the site, which is northwest of M250, had probably already been built
|
||||||
in Aspelta's reign (the beginning of the 6th century BC) in the form of
|
in Aspelta's reign (the beginning of the 6th century BC) in the form of
|
||||||
a cella on the top of a podium.[^41] According to László Török, the
|
a cella on top of a podium.[^41] According to László Török, the
|
||||||
temple was dedicated in its later form to the cult of Re or, more
|
temple was dedicated in its later form to the cult of Re or, more
|
||||||
precisely, to the unification of Amun with Re.[^42] Hinkel interpreted
|
precisely, to the unification of Amun with Re.[^42] Hinkel interpreted
|
||||||
it more carefully as a temple of Amun.[^43]
|
it more carefully as a temple of Amun.[^43]
|
||||||
|
|
||||||
So far, the battle reliefs of M250 were analyzed by several authors. It
|
So far, the battle reliefs of M250 were analyzed by several authors. It
|
||||||
is Hinkel who published the temple and gave the most detailed
|
is Hinkel who published the temple and gave the most detailed
|
||||||
description and analysis of the relief blocks to-date.[^44] According to
|
description and analysis of the relief blocks to date.[^44] According to
|
||||||
Török, the decoration of the facades had a "historically" formulated
|
Török, the decoration of the façades had a "historically" formulated
|
||||||
triumphal aspect.[^45]. Before the publication of the temple by Hinkel,
|
triumphal aspect.[^45]. Before the publication of the temple by Hinkel,
|
||||||
Steffen Wenig assigned them to the reign of Aspelta because his stela
|
Steffen Wenig assigned them to the reign of Aspelta because his stela
|
||||||
was found on the site. Wenig related the reliefs to the ones from the
|
was found on the site. Wenig related the reliefs to the ones from the
|
||||||
B500 temple of Amun at Gebel Barkal, not knowing at that time that they
|
B500 temple of Amun at Gebel Barkal, not knowing at that time that they
|
||||||
predate M250.[^46] Inge Hofmann analysed the war reliefs in detail
|
predate M250.[^46] Inge Hofmann analyzed the war reliefs in detail
|
||||||
regarding the weapons and equipment worn by the Meroites and emphasized
|
regarding the weapons and equipment worn by the Meroites and emphasized
|
||||||
that the weapons they use are post-Napatan. Based on the kilts and hair
|
that the weapons they use are post-Napatan. Based on the kilts and hair
|
||||||
feathers worn by some of the enemies of Meroites in these scenes, she
|
feathers worn by some of the enemies of Meroites in these scenes, she
|
||||||
concluded that they are southerners but that they cannot be identified
|
concluded that they are southerners, but that they cannot be associated
|
||||||
with any specific Sudanese tribe.[^47] This type of enemy wearing a kilt
|
with any specific Sudanese community.[^47] This type of enemy wearing a kilt
|
||||||
and feathers is also found as a bound prisoner on the pylon of the tomb
|
and feathers is also found as a bound prisoner on the pylon of the tomb
|
||||||
chapel of Begrawiya North 6 (the tomb of Amanishakheto).[^48] It is also
|
chapel of Begrawiya North 6 (the tomb of Amanishakheto).[^48] It is also
|
||||||
depicted on the east wall painting from the small temple M292, better
|
depicted on the east wall painting from the small temple M292, better
|
||||||
known because of the head of a statue of Augustus which was buried in
|
known because of the head of a statue of Augustus, which was buried in
|
||||||
front of its entrance, as well as a representation of the so called
|
front of its entrance, as well as a representation of the so-called
|
||||||
Roman prisoner on the same wall painting.[^49] According to Florian Wöß,
|
Roman prisoner on the same wall painting.[^49] According to Florian Wöß,
|
||||||
this type of enemy can be classified as an Inner African Type. It is
|
this type of enemy can be classified as an Inner African Type. It is
|
||||||
most numerous among Meroitic depictions of enemies, and Wöß argues that
|
most numerous among Meroitic depictions of enemies and Wöß argues that
|
||||||
it could have therefore represented a real threat to the Meroites.[^50]
|
it could have therefore represented a real threat to the Meroites.[^50]
|
||||||
This conclusion corresponds well with the interpretation of the Meroitic
|
This conclusion resonates well with the interpretation of the Meroitic
|
||||||
kingdom having a heartland in the Nile Valley, at Keraba, and perhaps
|
kingdom as having a heartland in the Nile Valley, at Keraba, and perhaps
|
||||||
also the southland, Meroitic kingdom was surrounded by various
|
also the southland. The Meroitic kingdom was surrounded by various
|
||||||
neighbouring communities that could have made a real threat and were
|
neighbouring communities that could have posed a real threat and were
|
||||||
only occasionally under Kushite control.[^51] As we have already seen,
|
only occasionally under Kushite control.[^51] As we have already seen,
|
||||||
numerous texts refer to conflicts with these communities outside the
|
numerous texts refer to conflicts with these communities outside the
|
||||||
realm of the Kushite kingdom.
|
realm of the Kushite kingdom.
|
||||||
|
|
||||||
Hinkel has already concluded that the north wall of M250 depicts women
|
Hinkel has already concluded that the north wall of M250 depicts women
|
||||||
and children taken by the Meroites in their raid of the first cataract,
|
and children taken by the Meroites in their raid of the First Cataract,
|
||||||
as reported by Strabo in *Geography* (17. I. 54),[^52] and that the
|
as reported by Strabo in *Geography* (17. I. 54),[^52], and that the
|
||||||
south wall depicts a conflict with some southern population that the
|
south wall depicts a conflict with some southern population that the
|
||||||
Meroites encountered in Lower Nubia.[^53] However, if Meroe is
|
Meroites encountered in Lower Nubia.[^53] However, if Meroe is
|
||||||
understood as the centre of the axis, then the enemies depicted on the
|
understood as the centre of the axis, then the enemies depicted on the
|
||||||
south wall are unlikely to depict Lower Nubians. We know that during the
|
southern wall are unlikely to depict Lower Nubians. We know that during the
|
||||||
last decades of the 1st century BC, Lower Nubia was not hostile to
|
last decades of the 1st century BC Lower Nubia was not hostile to
|
||||||
Meroe, and that, rather the contrary, it rebelled against Rome. Gaius
|
Meroe, but on contrary, that it rebelled against Rome. Gaius
|
||||||
Cornelius Gallus reports in his trilingual stela from Philae erected in
|
Cornelius Gallus reports in his trilingual stela from Philae, erected in
|
||||||
29 BC that he placed a local tyrant to govern Triakontaschoinos (Lower
|
29 BC, that he placed a local tyrant to govern Triakontaschoinos (Lower
|
||||||
Nubia), which became part of the province of Egypt and established a
|
Nubia), which became part of the province of Egypt and established a
|
||||||
personal patron/client relationship with the king of Meroe.[^54] This
|
personal patron/client relationship with the king of Meroe.[^54] This
|
||||||
arrangement obliged inhabitants of Triakontaschoinos to pay taxes.[^55]
|
arrangement obliged inhabitants of Triakontaschoinos to pay taxes.[^55]
|
||||||
Roman emperor Augustus then ordered Lucius Aelius Gallus, the second
|
Roman emperor Augustus then ordered Lucius Aelius Gallus, the second
|
||||||
prefect of Egypt, to prepare a military expedition against province
|
prefect of Egypt, to prepare a military expedition against province
|
||||||
Arabia Felix. Aelius Gallus regrouped the forces stationed in Egypt and
|
Arabia Felix. Aelius Gallus regrouped the forces stationed in Egypt and
|
||||||
took c. 8000 of the 16.800 men in three legions and 5500 of the
|
took c. 8000 of the 16800 men in three legions and 5500 of the
|
||||||
auxiliary forces. The expedition was carried out in 26-25 BC and ended
|
auxiliary forces. The expedition was carried out in 26-25 BC and ended
|
||||||
with Roman defeat. The inhabitants of Triakontaschoinos received the
|
with Roman defeat. The inhabitants of Triakontaschoinos received the
|
||||||
news of Aelius Gallus' failure in Arabia and revolted in the summer of
|
news of Aelius Gallus' failure in Arabia and revolted in the summer of
|
||||||
25 BC. The aim of the revolt was to end the previously established
|
25 BC. The aim of the revolt was to end the previously established
|
||||||
status of Triakontaschoinos and the obligation of paying tax to Rome.
|
status of Triakontaschoinos and the obligation of paying tax to Rome.
|
||||||
Concurrently with this revolt, there were local rebellions against the
|
Concurrent with this revolt, there were local rebellions against the
|
||||||
pressure of taxation in Upper Egypt.[^56] The rebels might also have
|
pressure of taxation in Upper Egypt.[^56] The rebels might also have
|
||||||
received help from the king of Meroe. Meroe probably tried to use the
|
received help from the king of Meroe. Meroe probably tried to use the
|
||||||
opportunity presented by the revolt in Triakontaschoinos and Upper Egypt
|
opportunity presented by the revolt in Triakontaschoinos and Upper Egypt
|
||||||
to establish the northern frontier in the region of the First
|
to establish the northern frontier in the region of the First
|
||||||
Cataract.[^57] Therefore, it is unlikely that the southern enemy
|
Cataract.[^57] Therefore, it is unlikely that the southern enemy
|
||||||
depicted on the walls of temple M250 represents Lower Nubians. They were
|
depicted on the walls of temple M250 represents Lower Nubians. They were
|
||||||
not hostile to Meroe at the time before the building of the temple M250
|
not hostile toward Meroe at the time before the building of the temple M250
|
||||||
under Akinidad. On the contrary, they were its allies in war with Rome.
|
under Akinidad. On the contrary, they were its allies in war with Rome.
|
||||||
|
|
||||||
Regarding the representations of women and children as prisoners of war,
|
Regarding the representations of women and children as prisoners of war,
|
||||||
|
@ -323,26 +323,26 @@ in front of them, after which comes one more group of nude women and
|
||||||
children. They are approached by oppositely-oriented men, probably in a
|
children. They are approached by oppositely-oriented men, probably in a
|
||||||
battle. After them, the register continues in an east-west orientation
|
battle. After them, the register continues in an east-west orientation
|
||||||
towards a columned building, which is presumably a representation of a
|
towards a columned building, which is presumably a representation of a
|
||||||
temple.[^61] Behind this columned building in the continuation of the
|
temple.[^61] The register continues behind this columned building and
|
||||||
register. There is a break here, after which comes poorly preserved
|
there is a break here, after which comes poorly preserved
|
||||||
representations of round huts and trees.[^62] Only the lower parts of
|
representations of round huts and trees.[^62] Only the lower parts of
|
||||||
the figures of women and children are preserved on the north wall, so it
|
the figures of women and children are preserved on the north wall, so it
|
||||||
is hard to say more about them. However, the women and children seem to
|
is hard to say more about them. However, the women and children seem to
|
||||||
be nude. The gender of the children cannot be identified because the
|
be nude. The gender of the children cannot be identified because the
|
||||||
representations were later damaged in the genital area. There are two
|
representations were later damaged in the genital area. There are two
|
||||||
groups and in-between them there are cattle. The groups are flanked with
|
groups and in between them there are cattle. The groups are flanked with
|
||||||
men who lead them forward.
|
men who lead them forward.
|
||||||
|
|
||||||
The south wall blocks with representations of women and children are not
|
The blocks of the southern wall, with representations of women and children, are not
|
||||||
found *in situ,* but rather in the vicinity of the south wall. Some of
|
found *in situ*, but rather in the vicinity of the south wall. Some of
|
||||||
them can be joined, and some of these joints present evidence for at
|
them can be joined and some of these joints present evidence for at
|
||||||
least two registers. In one case, the upper register of the two depicts
|
least two registers. In one case, the upper register of the two depicts
|
||||||
both women and children as prisoners of war, while the lower register
|
both women and children as prisoners of war, while the lower register
|
||||||
depicts ship-fragments 198, 322, 323, 319 and 190.[^63] The figures in
|
depicts ship-fragments 198, 322, 323, 319 and 190.[^63] The figures in
|
||||||
the two registers are differently oriented. Additionally, one more boat
|
the two registers are differently oriented. Additionally, one more boat
|
||||||
representation with a head of a ram possibly indicates a relation to
|
representation with a head of a ram possibly indicates a relation to
|
||||||
Amun (fragments 113 and 106).[^64] It is oriented in the same direction
|
Amun (fragments 113 and 106).[^64] It is oriented in the same direction
|
||||||
as the previous boat. On the blocks of the south wall, both men and
|
as the previous boat. On the blocks of the south wall both men and
|
||||||
women are depicted as prisoners of war next to children (Figure 2).
|
women are depicted as prisoners of war next to children (Figure 2).
|
||||||
|
|
||||||
 of the south wall of M250")
|
 of the south wall of M250")
|
||||||
|
@ -377,9 +377,9 @@ sacking of Philae, Elephantine, and Syene by the Meroites,[^66] as
|
||||||
reported by Strabo in Geography, 17. I. 54.[^67] The context of the war
|
reported by Strabo in Geography, 17. I. 54.[^67] The context of the war
|
||||||
reliefs on the northern wall of the temple indeed indicates a northern
|
reliefs on the northern wall of the temple indeed indicates a northern
|
||||||
conflict. It is interesting that the oval name rings for the toponyms or
|
conflict. It is interesting that the oval name rings for the toponyms or
|
||||||
ethnonyms of the defeated enemies are left blank on the northern part of
|
ethnonyms of defeated enemies are left blank on the northern part of
|
||||||
the temple pylon (Figure 3),[^68] and were only filled in with Meroitic
|
the temple pylon (Figure 3),[^68] and were only filled in with Meroitic
|
||||||
hieroglyphs on the south part of the temple pylon, which have thus far
|
hieroglyphs on the southern part of the temple pylon, which have thus far
|
||||||
not been identified with certainty.[^69] In the light of Strabo's
|
not been identified with certainty.[^69] In the light of Strabo's
|
||||||
Geography 17. I. 54, in which he writes that when told that they should
|
Geography 17. I. 54, in which he writes that when told that they should
|
||||||
go to Augustus, the Meroites answered they do not know who that
|
go to Augustus, the Meroites answered they do not know who that
|
||||||
|
@ -388,16 +388,16 @@ province of Egypt was unknown or insufficiently known to the Meroites.
|
||||||
This explains the empty oval name rings on the northern part of the
|
This explains the empty oval name rings on the northern part of the
|
||||||
temple pylon. Except for the generic *Arome* referring to Rome[^71] and
|
temple pylon. Except for the generic *Arome* referring to Rome[^71] and
|
||||||
*Tmey* referring to the north,[^72] we do not know of any other Roman
|
*Tmey* referring to the north,[^72] we do not know of any other Roman
|
||||||
toponyms from Meroe so far, and it is likely that in the first century
|
toponyms from Meroe so far and it is likely that in the first century
|
||||||
BC and first century AD, the Meroites indeed did not know of any others.
|
BC and first century AD the Meroites indeed did not know of any others.
|
||||||
If the reliefs on the northern walls of the temple depict a Meroitic
|
If the reliefs on the northern walls of the temple depict a Meroitic
|
||||||
raid on the First Cataract sites, then we have to take into account that
|
raid on the First Cataract sites, then we have to take into account that
|
||||||
they imprisoned the local population, consisting also of women and
|
they imprisoned the local population, consisting also of women and
|
||||||
children, and not only of men. These women and children could also have
|
children and not only of men. These women and children could also have
|
||||||
been local and not necessarily incomers after the Roman taking of Egypt.
|
been local and not necessarily immigrants after the Roman takeover of Egypt.
|
||||||
The iconographic evidence from M250 corresponds well with the textual
|
The iconographic evidence from M250 corresponds well with the textual
|
||||||
attestations for the taking of prisoners of war of different ages and
|
attestations for the taking of prisoners of war of different ages and
|
||||||
genders and allocating them to temples of Amun. Interestingly, just like
|
genders, and allocates them to temples of Amun. Interestingly, just like
|
||||||
in ancient Egyptian iconography of the New Kingdom, there is an absence
|
in ancient Egyptian iconography of the New Kingdom, there is an absence
|
||||||
of violence against women and children.[^73] Bearing in mind the idea
|
of violence against women and children.[^73] Bearing in mind the idea
|
||||||
that frames of war regulate what is reported and represented in various
|
that frames of war regulate what is reported and represented in various
|
||||||
|
@ -405,20 +405,20 @@ media, we can consider the possibility that some realities of war such
|
||||||
as violence against non-combatants were censured due to socially
|
as violence against non-combatants were censured due to socially
|
||||||
determined taste. Hurting women and children was probably considered a
|
determined taste. Hurting women and children was probably considered a
|
||||||
form of illegitimate violence and although it probably occurred, it was
|
form of illegitimate violence and although it probably occurred, it was
|
||||||
not communicated to local audience.
|
not communicated to local audiences.
|
||||||
|
|
||||||
# Feminization of Enemies in Texts
|
# Feminization of Enemies in Texts
|
||||||
|
|
||||||
The feminization of enemies is a common cross-cultural motif of war
|
The feminization of enemies is a common cross-cultural motif in war
|
||||||
discourses, both textual and visual. As anthropologist Marilyn Strathern
|
discourse, both textual and visual. As anthropologist Marilyn Strathern
|
||||||
argued, "relations between political enemies stand for relations between
|
argued, "relations between political enemies stand for relations between
|
||||||
men and women".[^74] Numerous examples are known for this from ancient
|
men and women".[^74] Numerous examples are known for this from ancient
|
||||||
Egypt and Neo-Assyria, and these are extensively dealt with
|
Egypt and Neo-Assyria and these are extensively dealt with
|
||||||
elsewhere.[^75] Here, the focus will be on the feminization of enemies
|
elsewhere.[^75] Here, the focus will be on the feminization of enemies
|
||||||
in Kushite war discourse.
|
in Kushite war discourse.
|
||||||
|
|
||||||
One attestation for the feminization of enemies, with, to the best of my
|
One attestation for the feminization of enemies without parallels, to the best of my
|
||||||
knowledge, no parallels, is found on the Triumphal Stela of Piye (Cairo
|
knowledge, is found on the Triumphal Stela of Piye (Cairo
|
||||||
JE 48862, 47086-47089, lines 149-150), the founder of the 25th Dynasty
|
JE 48862, 47086-47089, lines 149-150), the founder of the 25th Dynasty
|
||||||
of Egypt, who ruled between 744-714 BC: "Now these kings and counts of
|
of Egypt, who ruled between 744-714 BC: "Now these kings and counts of
|
||||||
Lower Egypt came to behold His Majesty's beauty, their legs being the
|
Lower Egypt came to behold His Majesty's beauty, their legs being the
|
||||||
|
@ -428,47 +428,47 @@ translated this part of the text in a way that suggests that the legs of
|
||||||
the kings and counts of Lower Egypt trembled like those of women.[^77]
|
the kings and counts of Lower Egypt trembled like those of women.[^77]
|
||||||
One has to stress that the adjective *tremblant* (French trembling) is
|
One has to stress that the adjective *tremblant* (French trembling) is
|
||||||
not written in the text, but is rather assumed by Grimal. On the other
|
not written in the text, but is rather assumed by Grimal. On the other
|
||||||
hand, Hans Goedicke translates the text so that instead of legs, he
|
hand, Hans Goedicke's translates rdwj=sn not as legs, but knees
|
||||||
interprets it as knees.[^78] According to Robert K. Ritner, this means
|
instead.[^78] According to Robert K. Ritner, this means
|
||||||
that they were trembling in fear,[^79] and similarly, according to Amr
|
that they were trembling in fear,[^79] and similarly, according to Amr
|
||||||
el Hawary, this could indicate that the enemies of Piye had their legs
|
el Hawary, this could indicate that enemies of Piye had their legs
|
||||||
bent at the knees from fear.[^80] However, David O'Connor and Stephen
|
bent at the knees from fear.[^80] However, David O'Connor and Stephen
|
||||||
Quirke understand the text as a metaphor for the femininity of Piye's
|
Quirke understand the text as a metaphor for the femininity of Piye's
|
||||||
enemies, because the legs of women are smooth skinned.[^81] Yet,
|
enemies, because the legs of women are smooth-skinned.[^81] Yet,
|
||||||
although both men and women shaved in Egypt and Nubia, we cannot assume
|
although both men and women shaved in Egypt and Nubia, we cannot assume
|
||||||
that body hair removal was restricted only to women. For Nubia at least
|
that body hair removal was restricted only to women. For Nubia, at least,
|
||||||
this is indicated by the description of Kushites in the Bible as tall
|
this is indicated by the description of Kushites in the Bible as tall
|
||||||
and smooth-skinned people (Isaiah 18: 7).[^82] Later in the text, it is
|
and smooth-skinned people (Isaiah 18: 7).[^82] Later in the text, it is
|
||||||
stated that three of these kings and counts stayed outside the palace
|
stated that three of these kings and counts stayed outside the palace
|
||||||
"because of their legs" (*r rdwj=sn*), and only one entered. el Hawary
|
"because of their legs" (*r rdwj=sn*), and only one entered. El Hawary
|
||||||
postulates that this could be related to the previous comparison with
|
postulates that this could be related to the previous comparison with
|
||||||
the legs of women.[^83] Another case is possibly alluded to later in the
|
the legs of women.[^83] Another case is possibly alluded to later in the
|
||||||
same text, when it is stated "You return having conquered Lower Egypt;
|
same text when it states "You return having conquered Lower Egypt;
|
||||||
making bulls into women" (*jw=k jy.tw* *ḥ3q.n=k T3-mḥw* *jr=k k3.w m
|
making bulls into women" (*jw=k jy.tw* *ḥ3q.n=k T3-mḥw* *jr=k k3.w m
|
||||||
ḥm.wt*).[^84] Bearing in mind that in the Instructions of Ankhsheshonqy
|
ḥm.wt*).[^84] Bearing in mind that in the Instructions of Ankhsheshonqy
|
||||||
(X, 20), an Egyptian text of the Ptolemaic period (305-30 BC), bulls are
|
(X, 20), an Egyptian text of the Ptolemaic period (305-30 BC), bulls are
|
||||||
contrasted to the vulvas which should receive them[^85], we can argue
|
contrasted to the vulvas which should receive them[^85], we can argue
|
||||||
that, in both cases, bulls stand for men, or at least masculinity, in
|
that, in both cases, bulls stand for men, or at least masculinity, in
|
||||||
both the human and animal world. It is interesting that on the Triumphal
|
both the human and animal world. It is interesting that on the Triumphal
|
||||||
stela of Piye, women of the palace of the Lower Egyptian king Nimlot did
|
stela of Piye women from the palace of the Lower Egyptian king Nimlot
|
||||||
pay homage to Piye "after the manner of women" (*m* *ḫt* *ḥmwt*).[^86]
|
paid homage to Piye "after the manner of women" (*m* *ḫt* *ḥmwt*).[^86]
|
||||||
Maybe this indicates that there was also a manner in which men are
|
Maybe this indicates that there was also a manner in which men are
|
||||||
supposed to pay homage to the king, and that the defeated kings and
|
supposed to pay homage to the king, and that the defeated kings and
|
||||||
counts of Lower Egypt failed to do this, or at least the text wants us
|
counts of Lower Egypt failed to do this, or at least the text wants us
|
||||||
to believe that. The failed masculinity of Nimlot in the text of the
|
to believe that. The failed masculinity of Nimlot in the text of the
|
||||||
stela was extensively studied most recently by Mattias Karlsson. Next to
|
stela was extensively studied most recently by Mattias Karlsson. Next to
|
||||||
the motives already mentioned, additional arguments are rich and
|
the motives already mentioned, additional arguments are rich and
|
||||||
complex. Piye (Piankhi) is representing ideal masculinity contrasted
|
complex. Piye (Piankhi) is representing ideal masculinity, contrasted
|
||||||
with failed masculinity of Nimlot. This can be observed both in the text
|
with failed masculinity of Nimlot. This can be observed both in the text
|
||||||
and in the iconography of the stela. For example, Nimlot is holding a
|
and in the iconography of the stela. For example, Nimlot is holding a
|
||||||
sistrum, a musical instrument usually linked to women (e.g., priestesses
|
sistrum, a musical instrument usually linked to women (e.g. priestesses
|
||||||
of Hathor), and he stands behind his wife and usually the men are
|
of Hathor), while he is standing behind his wife and not depicted in the
|
||||||
frontal figures. His wife speaks for him and appears as the head of his
|
usual front-facing manner. His wife speaks for him and appears as the head of his
|
||||||
household.[^87] To these arguments, one can also add the fact that the
|
household.[^87] To these arguments one can also add the fact that the
|
||||||
silhouette of the defeated Egyptian princes in proskynesis differs in
|
silhouette of the defeated Egyptian princes in proskynesis differs in
|
||||||
shape from usual representations of men. Their bodies seem to be curvier
|
shape from usual representations of men. Their bodies seem to be curvier
|
||||||
as in Kushite depictions of women. An allusion of sexual domination is
|
as in Kushite depictions of women. An allusion of sexual domination is
|
||||||
not directly communicated but it might be that it was implied.
|
not directly communicated, but it might have been implied.
|
||||||
|
|
||||||
There are other attestations of the feminization of enemies in texts
|
There are other attestations of the feminization of enemies in texts
|
||||||
composed for the Kushite kings. In the Annals of Harsiyotef (Cairo JE
|
composed for the Kushite kings. In the Annals of Harsiyotef (Cairo JE
|
||||||
|
@ -478,8 +478,8 @@ of Mededet was sent to Harsiyotef, saying: "You are my god. I am your
|
||||||
servant. I am a woman. Come to me" (*ntk p(3)=j* *nṯr* *jnk p(3)=k b3k*
|
servant. I am a woman. Come to me" (*ntk p(3)=j* *nṯr* *jnk p(3)=k b3k*
|
||||||
*jnk* *sḥmt* *my j-r=j*).[^88] In this attestation, we have a direct
|
*jnk* *sḥmt* *my j-r=j*).[^88] In this attestation, we have a direct
|
||||||
speech of the enemy, who, according to the text, identifies himself with
|
speech of the enemy, who, according to the text, identifies himself with
|
||||||
a woman. Of course, we are safe to assume that these words were put in
|
a woman. Of course we are safe to assume that these words were put in
|
||||||
his mouth by the composer of the text of the stela. el Hawary has
|
his mouth by the composer of the text of the stela. El Hawary has
|
||||||
already made a connection between the passage from the Annals of
|
already made a connection between the passage from the Annals of
|
||||||
Harsiyotef and this passage from the Triumphal stela of Piye, describing
|
Harsiyotef and this passage from the Triumphal stela of Piye, describing
|
||||||
the homage to Piye in a womanly manner. Interestingly, no such
|
the homage to Piye in a womanly manner. Interestingly, no such
|
||||||
|
@ -501,11 +501,11 @@ participation of a Meroitic queen in war against Rome, describing Queen
|
||||||
*Kandake* here as "a manly woman who had lost one of her eyes".[^92] We
|
*Kandake* here as "a manly woman who had lost one of her eyes".[^92] We
|
||||||
should be careful with crediting such descriptions much value. Not only
|
should be careful with crediting such descriptions much value. Not only
|
||||||
did Strabo confuse a Meroitic royal title that probably indicated a
|
did Strabo confuse a Meroitic royal title that probably indicated a
|
||||||
mother of a king[^93], but there is also a tendency among Graeco-Roman
|
mother of a king,[^93] but there is also a tendency among Graeco-Roman
|
||||||
authors to depict foreign women as masculine, thus creating an inverted
|
authors to depict foreign women as masculine thus creating an inverted
|
||||||
image to gender expectations in their own society. Such inversions could
|
image to gender expectations in their own society. Such inversions could
|
||||||
have served the purpose of shocking their audience and enhancing the
|
have served the purposes of shocking their audience and enhancing the
|
||||||
otherness of the foreign lands and peoples. This is evidently an example
|
otherness of foreign lands and peoples. This is evidently an example
|
||||||
of ideological gender inversion used as a sign of barbarism, especially
|
of ideological gender inversion used as a sign of barbarism, especially
|
||||||
towards foreign women, in the works of Strabo.[^94]
|
towards foreign women, in the works of Strabo.[^94]
|
||||||
|
|
||||||
|
@ -527,8 +527,8 @@ Hierakonpolis in Upper Egypt, dated to the Naqada IIC period, around
|
||||||
3500 BC. In Egypt, the motif has remained in the decoration of temple
|
3500 BC. In Egypt, the motif has remained in the decoration of temple
|
||||||
pylons, private and royal stelae, and small finds for more than 3500
|
pylons, private and royal stelae, and small finds for more than 3500
|
||||||
years. Its latest known appearance is found on temple reliefs from the
|
years. Its latest known appearance is found on temple reliefs from the
|
||||||
Roman period, where emperors Domitian, Titus, and Trajan are depicted
|
Roman period when emperors Domitian, Titus, and Trajan are depicted
|
||||||
smiting. Kushite kings are also depicted smiting enemies, and the motif
|
smiting. Kushite kings are also depicted smiting enemies and the motif
|
||||||
was adopted from ancient Egyptian art.[^96]
|
was adopted from ancient Egyptian art.[^96]
|
||||||
|
|
||||||
What differentiates the use of this motif in ancient Nubia during the
|
What differentiates the use of this motif in ancient Nubia during the
|
||||||
|
@ -543,13 +543,13 @@ New Kingdom. The king always defeats the supposedly stronger enemy.[^98]
|
||||||
Although the inclusion of queen Nefertiti smiting female enemies
|
Although the inclusion of queen Nefertiti smiting female enemies
|
||||||
alongside scenes of Akhenaten smiting male enemies probably indicates
|
alongside scenes of Akhenaten smiting male enemies probably indicates
|
||||||
the elevation of her status during the period of his rule[^99],
|
the elevation of her status during the period of his rule[^99],
|
||||||
Nefertiti is nevertheless not the dominant figure in such depictions.
|
Nefertiti is nevertheless not the dominant figure in such depictions;
|
||||||
The dominant figure remains the smiting king because of the gender of
|
the dominant figure remains the smiting king because of the gender of
|
||||||
the enemies he smites. Male enemies were considered more dangerous than
|
the enemies he smites. Male enemies were considered more dangerous than
|
||||||
female. When a female ruler like Hatshepsut (ca. 1479-1458 BC) of the
|
female. When a female ruler like Hatshepsut (ca. 1479-1458 BC) of the
|
||||||
18th Dynasty is depicted smiting or trampling male enemies, she
|
18th Dynasty is depicted smiting or trampling male enemies, she
|
||||||
herself is depicted as a king -a man- and her identity is indicated by
|
herself is depicted as a king -a man- and her identity is indicated by
|
||||||
the accompanying text containing her name and royal titles.[^100]
|
the accompanying text that lists her name and royal titles.[^100]
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
|
@ -560,15 +560,15 @@ The Meroitic case is interesting precisely because certain royal women
|
||||||
can be depicted smiting and spearing male enemies. Amanishakheto (1st
|
can be depicted smiting and spearing male enemies. Amanishakheto (1st
|
||||||
century AD) is depicted spearing enemies on the pylon of her pyramid
|
century AD) is depicted spearing enemies on the pylon of her pyramid
|
||||||
Begrawiya North 6 in Meroe, both to the left and right of the pylon
|
Begrawiya North 6 in Meroe, both to the left and right of the pylon
|
||||||
entrance (Figure 4). On the left she holds a bow, an arrow, and a rope
|
entrance (Figure 4). On the left, she holds a bow, arrow and rope
|
||||||
in her left hand, and a spear in her right hand. The rope in her left
|
in her left hand and a spear in her right hand. The rope in her left
|
||||||
hand extends to the necks of the enemies, to which they are tied. Seven
|
hand extends to the necks of the enemies to which it is tied. Seven
|
||||||
enemies are depicted with rope tied around their necks and with their
|
enemies are depicted with rope tied around their necks and with their
|
||||||
arms tied behind their backs. On the right, Amanishakheto holds a rope
|
arms tied behind their backs. On the right, Amanishakheto holds a rope
|
||||||
in her left hand, to which four enemies are bound around their necks.
|
in her left hand which binds four enemies around their necks.
|
||||||
Their arms are also bound behind their backs. In her right hand, she
|
Their arms are also bound behind their backs. In her right hand, she
|
||||||
holds a spear with which she spears the enemies.[^101] On her stela from
|
holds a spear with which she spears the enemies.[^101] On her stela from
|
||||||
Naqa, she is depicted before the enthroned Lion God above a group of
|
Naqa she is depicted before the enthroned Lion God above a group of
|
||||||
bound enemies.[^102]
|
bound enemies.[^102]
|
||||||
|
|
||||||

|

|
||||||
|
@ -580,7 +580,7 @@ Bound enemies are additionally depicted under the throne of the queen on
|
||||||
the north wall of pyramid Begrawiya North 11 attributed to
|
the north wall of pyramid Begrawiya North 11 attributed to
|
||||||
Shanakdakheto, ca. 170-125 BC (Figure 5).[^103] Nine bows, the
|
Shanakdakheto, ca. 170-125 BC (Figure 5).[^103] Nine bows, the
|
||||||
traditional symbol for enemies originating from ancient Egypt, are
|
traditional symbol for enemies originating from ancient Egypt, are
|
||||||
depicted under the throne of Amanitore, of the 1st century AD (Figure
|
depicted under the throne of Amanitore of the 1st century AD (Figure
|
||||||
6), just as they are depicted under the throne of Natakamani in the
|
6), just as they are depicted under the throne of Natakamani in the
|
||||||
pyramid Begrawiya North 1 of queen Amanitore.[^104]
|
pyramid Begrawiya North 1 of queen Amanitore.[^104]
|
||||||
|
|
||||||
|
@ -598,18 +598,18 @@ pyramid Begrawiya North 1 of queen Amanitore.[^104]
|
||||||
Amanitore is depicted smiting enemies on the pylon of the Lion Temple in
|
Amanitore is depicted smiting enemies on the pylon of the Lion Temple in
|
||||||
Naga.[^105] There, she is paired with Natakamani, who is also depicted
|
Naga.[^105] There, she is paired with Natakamani, who is also depicted
|
||||||
smiting enemies (Figure 7). Natalia Pomerantseva interpreted this as
|
smiting enemies (Figure 7). Natalia Pomerantseva interpreted this as
|
||||||
"hero worshiping of the woman-image" adding that "it is impossible to
|
"hero worshiping of the woman-image", adding that "it is impossible to
|
||||||
imagine the frail Egyptian woman's figure in the part of chastisement of
|
imagine the frail Egyptian woman's figure in the part of chastisement of
|
||||||
enemies".[^106] Yet, as we have seen, some Egyptian royal women are
|
enemies".[^106] Yet, as we have seen, some Egyptian royal women are
|
||||||
depicted in violent acts such as the smiting and trampling of female
|
depicted in violent acts such as the smiting and trampling of female
|
||||||
enemies, and the reason they are not depicted doing the same to male
|
enemies and the reason they are not depicted doing the same to male
|
||||||
enemies is status related. If they would be depicted as women smiting or
|
enemies is status-related. If they would be depicted as women smiting or
|
||||||
trampling male enemies, this would elevate their status to the one of
|
trampling male enemies, this would elevate their status to the one of
|
||||||
kings. Clearly, attention was paid to avoid this. In the case of the
|
kings; clearly, attention was paid to avoid this. In the case of the
|
||||||
Meroitic queens, the gender of the enemy was not an issue. Jacke
|
Meroitic queens, the gender of the enemy was not an issue. Jacke
|
||||||
Phillips has also emphasized that the smiting of the enemies by Merotic
|
Phillips has also emphasized that the smiting of enemies by Merotic
|
||||||
queens is among the corpus of scenes which were formerly restricted to
|
queens is among the corpus of scenes, which were formerly restricted to
|
||||||
kings, but did not take the argument further. The reason for the
|
kings, but Phillips did not take the argument further. The reason for the
|
||||||
creation of these scenes can be seen in the specific status of royal
|
creation of these scenes can be seen in the specific status of royal
|
||||||
women in Meroitic ideology.[^107] However, we also have to bear in mind
|
women in Meroitic ideology.[^107] However, we also have to bear in mind
|
||||||
that, considering the number of known Napatan and Meroitic royal women,
|
that, considering the number of known Napatan and Meroitic royal women,
|
||||||
|
@ -626,26 +626,26 @@ times certain exceptional women rose to unparalleled positions.[^109]
|
||||||
# Conclusion
|
# Conclusion
|
||||||
|
|
||||||
Gender as a frame of war has structured both Napatan and Meroitic texts,
|
Gender as a frame of war has structured both Napatan and Meroitic texts,
|
||||||
from lists of the spoils of war to texts dealing with military
|
from lists enumerating the spoils of war to texts dealing with military
|
||||||
campaigns. In the first case, this is observable in the order that
|
campaigns. In the first case, this is observable in the order that
|
||||||
different categories of prisoners of war are listed, namely enemy rulers
|
different categories of prisoners of war are listed, namely enemy rulers
|
||||||
(men), then enemy men, women and children. This same structure for
|
(men), then enemy men, women and children. This same structure for
|
||||||
prisoners of wars is found with only slight differences in ancient
|
prisoners of wars is found with only slight differences in ancient
|
||||||
Egyptian spoils of war examples,[^110] which is hardly a coincidence.
|
Egyptian spoils of war examples,[^110] which can hardly be taken as a coincidence.
|
||||||
Since the earlier Napatan texts were written in Egyptian, their
|
Since the earlier Napatan texts were written in Egyptian, their
|
||||||
structure, at least when lists of spoils of war are concerned, could
|
structure, at least when lists of spoils of war are concerned, could
|
||||||
have been based on an Egyptian pattern. This then continued into the
|
have been based on an Egyptian pattern. This, then, continued into the
|
||||||
Meroitic period. In the second case, namely the texts dealing with
|
Meroitic period. In the second case, namely the texts dealing with
|
||||||
military campaigns, the working of gender as a frame of war is
|
military campaigns, how gender as a frame of war operates can be
|
||||||
observable in the discursive feminization of enemies in Napatan texts.
|
observed in the discursive feminization of enemies in Napatan texts.
|
||||||
Just like in ancient Egyptian and Neo-Assyrian texts[^111], enemies are
|
Just like in ancient Egyptian and Neo-Assyrian texts[^111], enemies are
|
||||||
discursively framed as women, or as being feminine. This is in fact a
|
discursively framed as women or effemininate. This is in fact a
|
||||||
metaphor found in many cultures in which strength is associated with men
|
metaphor found in many cultures in which strength is associated with men
|
||||||
and weakness is associated with women. Rather than just framing the
|
and weakness is associated with women. Rather than just framing the
|
||||||
power relations between the Kushite kings and their enemies, such
|
power relations between the Kushite kings and their enemies, such
|
||||||
metaphors strengthen the gender structure of the society itself,
|
metaphors strengthen the gender structure of the society itself,
|
||||||
privileging the men and masculinity. By discursively taking away
|
privileging men and masculinity. By discursively taking away
|
||||||
masculinity from the enemies, these texts are framing them as
|
masculinity from the enemy, these texts are framing them as
|
||||||
subordinate and thus legitimizing the subordination of women to men.
|
subordinate and thus legitimizing the subordination of women to men.
|
||||||
Unfortunately, the present state of knowledge of the Meroitic language
|
Unfortunately, the present state of knowledge of the Meroitic language
|
||||||
does not allow us to investigate possible feminizations of enemies in
|
does not allow us to investigate possible feminizations of enemies in
|
||||||
|
@ -658,7 +658,7 @@ ideology and the figure of *kandake*. We should, however, not entirely
|
||||||
exclude the possibility that women could have participated in war,
|
exclude the possibility that women could have participated in war,
|
||||||
although we do not have any explicit ancient Nubian textual attestations
|
although we do not have any explicit ancient Nubian textual attestations
|
||||||
for this. We also do not have any burials attributed to "warrior women"
|
for this. We also do not have any burials attributed to "warrior women"
|
||||||
or "warrior queens," based on the placement of weapons as grave goods in
|
or "warrior queens", based on the placement of weapons as grave goods in
|
||||||
graves of women.[^112] Even if such burials were to be found, one would
|
graves of women.[^112] Even if such burials were to be found, one would
|
||||||
have to be cautious in assigning military activity to women (or men)
|
have to be cautious in assigning military activity to women (or men)
|
||||||
simply because of the associated weapons. Muscular stress markers or
|
simply because of the associated weapons. Muscular stress markers or
|
||||||
|
@ -672,19 +672,19 @@ of Meroitic queens smiting enemies should be seen in the context of
|
||||||
royal ideology. Unlike Egyptian queens, who are depicted as women
|
royal ideology. Unlike Egyptian queens, who are depicted as women
|
||||||
smiting enemies only when these enemies are also women, both Meroitic
|
smiting enemies only when these enemies are also women, both Meroitic
|
||||||
kings and certain Meroitic queens are shown smiting and spearing enemy
|
kings and certain Meroitic queens are shown smiting and spearing enemy
|
||||||
men. There is no difference in the gender of the enemy, and therefore no
|
men. There is no difference in the gender of the enemy and therefore no
|
||||||
hierarchy. This can be explained with an elevated status of queenship in
|
hierarchy. This can be explained with an elevated status of queenship in
|
||||||
Kush in comparison to ancient Egypt. Unlike in Egypt, where a ruling
|
Kush, in comparison to ancient Egypt. Unlike in Egypt, where a ruling
|
||||||
woman like Hatshepsut had to be depicted as a man when smiting enemies,
|
woman like Hatshepsut had to be depicted as a man when smiting enemies,
|
||||||
a ruling woman in Meroe could be depicted as a woman smiting male
|
a ruling woman in Meroe could be depicted as a woman smiting male
|
||||||
enemies.
|
enemies.
|
||||||
|
|
||||||
Clearly, gender was one of the frames of war in ancient Nubia, with a
|
Clearly, gender was one of the frames of war in ancient Nubia, with a
|
||||||
tradition spanning several centuries and possibly even having ancient
|
tradition spanning several centuries and possibly even having ancient
|
||||||
Egyptian roots, at least when the structure of the spoils of war lists
|
Egyptian roots, at least where the structure for listings of the spoils
|
||||||
and some metaphors for enemies are concerned. However, as I have shown,
|
of war and some metaphors for enemies are concerned. However, as I have shown,
|
||||||
there are certain expressions without parallels in ancient Egyptian
|
there are certain expressions without parallels in ancient Egyptian
|
||||||
texts which testify to an independent but equally male-privileging
|
texts, which testify to an independent, but equally male-privileging
|
||||||
discourse. Gender as a frame of war (sensu Judith Butler) justified
|
discourse. Gender as a frame of war (sensu Judith Butler) justified
|
||||||
state violence against enemies by discursively representing them as
|
state violence against enemies by discursively representing them as
|
||||||
women. In this manner, asymmetrical power relations in one domain (war)
|
women. In this manner, asymmetrical power relations in one domain (war)
|
||||||
|
@ -695,13 +695,13 @@ subordinate to Kushite men are naturalized through a reference to a
|
||||||
subordination of enemy men to Kushite men. Simultaneously, the lack of
|
subordination of enemy men to Kushite men. Simultaneously, the lack of
|
||||||
explicit violence conducted against enemy women and children was in a
|
explicit violence conducted against enemy women and children was in a
|
||||||
way "the cosmetic treatment of war", to use the words of Jean
|
way "the cosmetic treatment of war", to use the words of Jean
|
||||||
Baudrillard. The frame of war such as this one, clearly influenced how
|
Baudrillard. The frame of war such as this one clearly influenced how
|
||||||
war and violence is represented and consequently experienced by local
|
war and violence is represented and consequently experienced by local
|
||||||
audience which did not participate in war. Some forms of violence are
|
audiences who did not participate in war. Some forms of violence are
|
||||||
communicated to the local audience in a specific manner, relying on
|
communicated to local audiences in specific manners relying on
|
||||||
asymmetrical power relations of gender. Other forms of violence which
|
asymmetrical power relations of gender. Other forms of violence which
|
||||||
probably occurred, such as violence against non-combatants, are
|
probably occurred, such as violence against non-combatants, are
|
||||||
carefully avoided in texts and images. It was probably hard to justify
|
carefully avoided in texts and images as it was probably hard to justify
|
||||||
them.
|
them.
|
||||||
|
|
||||||
# Acknowledgments
|
# Acknowledgments
|
||||||
|
|
5
content/print/issue8.md
Normal file
5
content/print/issue8.md
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
---
|
||||||
|
title: "Issue 8 Print"
|
||||||
|
print: "issue/dotawo8.md"
|
||||||
|
draft: false
|
||||||
|
---
|
Loading…
Add table
Reference in a new issue