This commit is contained in:
parent
26b7893c71
commit
5a62535bce
@ -4,6 +4,8 @@
|
|||||||
|
|
||||||
This provides my template and cache supporting web / application server for my city university portfolio subdomain.
|
This provides my template and cache supporting web / application server for my city university portfolio subdomain.
|
||||||
|
|
||||||
|
[Production Server](https://cityuni.captainalm.com/)
|
||||||
|
|
||||||
Maintainer:
|
Maintainer:
|
||||||
[Captain ALM](https://code.mrmelon54.xyz/alfred)
|
[Captain ALM](https://code.mrmelon54.xyz/alfred)
|
||||||
|
|
||||||
|
4
base.css
4
base.css
@ -20,10 +20,12 @@ main{
|
|||||||
.centered{
|
.centered{
|
||||||
text-align: center;
|
text-align: center;
|
||||||
}
|
}
|
||||||
.content > p{
|
.content, .content > *{
|
||||||
word-break: break-word;
|
word-break: break-word;
|
||||||
-ms-word-wrap: break-word;
|
-ms-word-wrap: break-word;
|
||||||
word-wrap: break-word;
|
word-wrap: break-word;
|
||||||
|
}
|
||||||
|
.content > p, .content > h1, .content > h2, .content > h3, .content > h4, .content > h5, .content > h6{
|
||||||
margin-top: 0.5em;
|
margin-top: 0.5em;
|
||||||
margin-bottom: 0.5em;
|
margin-bottom: 0.5em;
|
||||||
}
|
}
|
||||||
|
@ -11,7 +11,15 @@
|
|||||||
{{ else }}
|
{{ else }}
|
||||||
<link id="style-theme" rel="stylesheet" href="{{ .Data.CSSDarkURL }}"/>
|
<link id="style-theme" rel="stylesheet" href="{{ .Data.CSSDarkURL }}"/>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
<script src="{{ .Data.JScriptURL }}"></script>
|
<script type="application/javascript">
|
||||||
|
const TheParameters = "{{ .Parameters }}"
|
||||||
|
const CssLightURL = "{{ .Data.CSSLightURL }}"
|
||||||
|
const CssDarkURL = "{{ .Data.CSSDarkURL }}"
|
||||||
|
const SunImageURL = "{{ .Data.SunImageLocation }}"
|
||||||
|
const MoonImageURL = "{{ .Data.MoonImageLocation }}"
|
||||||
|
const PlayImageURL = "{{ .Data.PlayVideoImageLocation }}"
|
||||||
|
</script>
|
||||||
|
<script type="application/javascript" src="{{ .Data.JScriptURL }}"></script>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<header class="header">
|
<header class="header">
|
||||||
@ -94,7 +102,7 @@
|
|||||||
</nav>
|
</nav>
|
||||||
</header>
|
</header>
|
||||||
<main class="main-box flex-col">
|
<main class="main-box flex-col">
|
||||||
<div>
|
<div id="about">
|
||||||
<div class="item-table flex-col">
|
<div class="item-table flex-col">
|
||||||
<div class="item-heading">
|
<div class="item-heading">
|
||||||
<div class="item-table-full">
|
<div class="item-table-full">
|
||||||
@ -114,8 +122,13 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
{{ $c := 0 }}
|
||||||
{{ range .GetEntries }}
|
{{ range .GetEntries }}
|
||||||
<div>
|
{{ $c = $.CounterPlusPlus }}
|
||||||
|
<div id="entry-{{ $c }}">
|
||||||
|
<script type="application/javascript">
|
||||||
|
EntryData[{{ $c }}] = CreateEntry("{{ .Name }}", "{{ .VideoLocation }}", "{{ .VideoContentType }}", "{{ .GetStartDateHTML }}", "{{ .GetEndDateHTML }}", "{{ .GetInt64Duration }}")
|
||||||
|
</script>
|
||||||
<div class="item-table flex-col">
|
<div class="item-table flex-col">
|
||||||
<div class="item-heading">
|
<div class="item-heading">
|
||||||
<div class="item-table-full">
|
<div class="item-table-full">
|
||||||
@ -134,14 +147,19 @@
|
|||||||
<div class="content">{{ .GetContent }}</div>
|
<div class="content">{{ .GetContent }}</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="item-table-360">
|
<div class="item-table-360">
|
||||||
<div>
|
<div id="video-{{ $c }}">
|
||||||
{{ if eq .VideoLocation "" }}
|
{{ if eq .VideoLocation "" }}
|
||||||
<img src="{{ $.Data.NoVideoImageLocation }}" alt="No Video" width="360px">
|
<img src="{{ $.Data.NoVideoImageLocation }}" alt="No Video" width="360px">
|
||||||
{{ else }}
|
{{ else }}
|
||||||
|
<script type="application/javascript">
|
||||||
|
CreateVideoPlaceholder({{ $c }})
|
||||||
|
</script>
|
||||||
|
<noscript>
|
||||||
<video controls width="360px">
|
<video controls width="360px">
|
||||||
<source src="{{ .VideoLocation }}" type="{{ .VideoContentType }}">
|
<source src="{{ .VideoLocation }}" type="{{ .VideoContentType }}">
|
||||||
<a href="{{ .VideoLocation }}">The Video</a>
|
<a href="{{ .VideoLocation }}">The Video</a>
|
||||||
</video>
|
</video>
|
||||||
|
</noscript>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -156,11 +174,6 @@
|
|||||||
</div>
|
</div>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
</div>
|
</div>
|
||||||
<!-- This needs to be moved into a script tag along with other stuff not here yet for JS support
|
|
||||||
<div class="data-hold">{{ .GetInt64Duration }}</div>
|
|
||||||
<div class="data-hold">{{ .GetStartDateHTML }}</div>
|
|
||||||
<div class="data-hold">{{ .GetEndDateHTML }}</div>
|
|
||||||
-->
|
|
||||||
</div>
|
</div>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
</main>
|
</main>
|
||||||
|
44
index.js
44
index.js
@ -2,3 +2,47 @@
|
|||||||
This file is (C) Captain ALM
|
This file is (C) Captain ALM
|
||||||
Under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License
|
Under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License
|
||||||
*/
|
*/
|
||||||
|
const EntryData = []
|
||||||
|
function CreateEntry(name, videourl, videotype, start, end, duration) {
|
||||||
|
return {
|
||||||
|
name: name,
|
||||||
|
videourl: videourl,
|
||||||
|
videotype: videotype,
|
||||||
|
start: Date.parse(start),
|
||||||
|
end: Date.parse(end),
|
||||||
|
duration : duration
|
||||||
|
};
|
||||||
|
}
|
||||||
|
function CreateVideoPlaceholder(id) {
|
||||||
|
let imgPH = document.createElement("img")
|
||||||
|
imgPH.src = PlayImageURL
|
||||||
|
imgPH.id = "play-"+id
|
||||||
|
imgPH.alt = "Play Video"
|
||||||
|
imgPH.width = 360
|
||||||
|
imgPH.style.cursor = "pointer"
|
||||||
|
if (document.addEventListener) {
|
||||||
|
imgPH.addEventListener("click", function () {ActivateVideo(id);})
|
||||||
|
} else {
|
||||||
|
imgPH.setAttribute("onclick", "ActivateVideo("+id+");")
|
||||||
|
imgPH.onclick = function () {ActivateVideo(id);}
|
||||||
|
}
|
||||||
|
document.getElementById("video-" + id).appendChild(imgPH)
|
||||||
|
}
|
||||||
|
function ActivateVideo(id) {
|
||||||
|
let holder = document.getElementById("video-" + id)
|
||||||
|
holder.removeChild(document.getElementById("play-"+id))
|
||||||
|
let vid = document.createElement("video")
|
||||||
|
vid.controls = true
|
||||||
|
let vids = document.createElement("source")
|
||||||
|
vids.src = EntryData[id].videourl
|
||||||
|
vids.type = EntryData[id].videotype
|
||||||
|
let vida = document.createElement("a")
|
||||||
|
vida.href = EntryData[id].videourl
|
||||||
|
vida.innerText = "The Video"
|
||||||
|
vid.appendChild(vids)
|
||||||
|
vid.appendChild(vida)
|
||||||
|
holder.appendChild(vid)
|
||||||
|
if (vid.play) {
|
||||||
|
vid.play()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ -13,9 +13,10 @@ type Marshal struct {
|
|||||||
OrderName int8
|
OrderName int8
|
||||||
OrderDuration int8
|
OrderDuration int8
|
||||||
Light bool
|
Light bool
|
||||||
|
Counter int
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m Marshal) GetEntries() (toReturn []EntryYaml) {
|
func (m *Marshal) GetEntries() (toReturn []EntryYaml) {
|
||||||
toReturn = m.Data.Entries
|
toReturn = m.Data.Entries
|
||||||
if m.OrderStartDate > 0 {
|
if m.OrderStartDate > 0 {
|
||||||
sort.Slice(toReturn, func(i, j int) bool {
|
sort.Slice(toReturn, func(i, j int) bool {
|
||||||
@ -59,3 +60,9 @@ func (m Marshal) GetEntries() (toReturn []EntryYaml) {
|
|||||||
}
|
}
|
||||||
return toReturn
|
return toReturn
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (m *Marshal) CounterPlusPlus() int {
|
||||||
|
toret := m.Counter
|
||||||
|
m.Counter++
|
||||||
|
return toret
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user