From 2515c4e19a1daf3c166c446ba97979f4bfebed26 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Paul=20H=C3=A4nsch?= Date: Thu, 26 Jul 2018 18:58:27 +0200 Subject: [PATCH] Implemented video view page with stereoscopic options --- index.cgi | 6 +++- list.sh | 4 +-- static/stereoview.js => stereoview.js | 0 style.css | 27 +++++++++++++++ view.sh | 49 +++++++++++++++++++++++++++ 5 files changed, 83 insertions(+), 3 deletions(-) rename static/stereoview.js => stereoview.js (100%) create mode 100644 view.sh diff --git a/index.cgi b/index.cgi index 6b0dc54..421b81e 100755 --- a/index.cgi +++ b/index.cgi @@ -48,6 +48,9 @@ if [ "$ITEM" = "/style.css" ]; then . "$_EXEC/cgilite/file.sh" [ -r "$_DATA/$ITEM" ] && FILE "$_DATA/$ITEM" \ || FILE "$_EXEC/style.css" +elif [ "$ITEM" = "/stereoview.js" ]; then + . "$_EXEC/cgilite/file.sh" + FILE "$_EXEC/stereoview.js" elif [ -f "$_DATA/$ITEM" ]; then case $ACTION in tag) @@ -62,10 +65,11 @@ elif [ -f "$_DATA/$ITEM" ]; then ;; delete) ;; - *) . "$_EXEC/cgilite/file.sh" + download) . "$_EXEC/cgilite/file.sh" fakemp4="$(COOKIE fakemp4)" FILE "$_DATA/$ITEM" "$([ "$fakemp4" = yes ] && printf 'video/mp4')" ;; + *) . "$_EXEC/view.sh" esac elif [ -d "$_DATA/$ITEM" ]; then case $ACTION in diff --git a/list.sh b/list.sh index f6f9975..f36fe67 100644 --- a/list.sh +++ b/list.sh @@ -37,11 +37,11 @@ list_item() { "$width" "$height" \ "$(printf '%s\n' "${tags#tags=}" \ | sed -r "$UNSTRING"' s;^;,;; s;,+;,;g; s;,$;;; - :X s;,([^,]+)(,|$); [span .tag \1]\2;; tX;' + :X s;,([^,]+)(,|$); [span .tag\n \1]\2;; tX;' )" "$name" "$link" "$link" else printf 'Canning record for nonexist file: %s\n' "$name" >&2 - # meta_purge "$_DATA/$ITEM/$name" + meta_purge "$_DATA/$ITEM/$name" fi } diff --git a/static/stereoview.js b/stereoview.js similarity index 100% rename from static/stereoview.js rename to stereoview.js diff --git a/style.css b/style.css index 0d1431a..880b2b8 100644 --- a/style.css +++ b/style.css @@ -359,6 +359,33 @@ a[href="#advsearch"]:before { #index input, #index button { margin-left: 1em;} +/* ### Video View ### */ + +#view h1 { + margin: 1em .5em; + font-size: 1.25em; + font-weight: bold; + text-decoration: none; +} + +#view #mainvideo { + display: inline; + width: 100%; + max-height: 70%; +} + +#view .time, #view .dim, +#view .tag { + margin-right: -.125em; + padding: .125em .25em; + color: black; +} +#view .time, +#view .dim { background-color: #CCD; } +#view .tag { background-color: #DCC; } + + + /* ### Multi Tagging Drawer ### */ #multitag fieldset{ diff --git a/view.sh b/view.sh new file mode 100644 index 0000000..baaad11 --- /dev/null +++ b/view.sh @@ -0,0 +1,49 @@ +#!/bin/sh + +. "$_EXEC/indexmeta.sh" +. "$_EXEC/widgets.sh" + +read length width height tags comment short <<-EOF + $(meta_info "$_DATA/$ITEM") + EOF + +printf 'Content-Type: text/html;charset=utf-8\r\n\r\n' + +{ printf ' +[!DOCTYPE HTML] +[html [head [title Listing] + [meta name="viewport" content="width=device-width"] + [link rel=stylesheet href="/style.css" ] +] [body #view + [script type="text/javascript" src="/stereoview.js"\n] + [div #navigation + [a #t_bookmarks href="#bookmarks" ★]' + w_search + printf ' + [a #t_avsearch href="#advsearch" Advanced] + [a #t_prefs href="#prefs" ⚙] + ]' + w_bookmarks + w_advsearch + w_prefs + printf ' + [h1\n %s] + [a "?a=download" Download] + [a "javascript:stereoview(180, document.getElementById("mainvideo"));" View 180° Stereoscopic] + [a "javascript:stereoview(360, document.getElementById("mainvideo"));" View 360° Stereoscopic] + [video #mainvideo controls="controls" [source src="?a=download" type="video/mp4"]] + [span .time %i:%imin] [span .dim %ix%i] %s + ' "$(HTML "${ITEM##*/}")" \ + "$((length / 60))" "$((length % 60))" "$width" "$height" \ + "$(printf '%s\n' "${tags#tags=}" |sed -r "$UNSTRING"' + s;^;,;; s;,+;,;g; s;,$;;; :X s;,([^,]+)(,|$); [span .tag\n \1]\2;; tX;' + )" + printf ' + [div #editing + [form method=POST action="?a=multitag"' + [ -d "$_DATA/${ITEM%/*}/.index/" ] && w_tagging + printf ' + ] + ] +] ] +'; } | "$_EXEC/cgilite/html-sh.sed" -- 2.39.2