. "$_EXEC"/cgilite/file.sh
. "$_EXEC"/session_lock.sh
-git init "$_DATA" >/dev/null
+git init "$_DATA" >/dev/null &
yield_page(){
- page="$1"
+ title="${1:-WebTXT}" page="$2"
printf '%s\r\n' 'Content-Type: text/html; charset=utf-8' \
"Content-Security-Policy: script-src 'none'" \
''
[meta name="viewport" content="width=device-width"]
[link rel="stylesheet" type="text/css" href="common.css"]
[link rel="stylesheet" type="text/css" href="webnote.css"]
- [title Webnote]
+ [title %s]
] [body class="%s"
- ' "$page"
+ ' "$title" "$page"
cat
printf '] ]'
} |"$_EXEC/cgilite/html-sh.sed" -u
}
+pagename() {
+ local name page="${1##*/}"
+ name="$(sed -nE "/[a-zA-Z0-9].[^\r ]/{s;\r$;;; p; q;};" "$_DATA/$page")"
+ [ "$name" ] && printf %s "$name" \
+ || printf %s "$page"
+}
+
+recent="$(COOKIE pages)"
+
case ${PATH_INFO##*/} in
favicon.ico) printf '%s\r\n' 'Content-Length: 0' '';;
common.css) FILE "$_EXEC/cgilite/common.css";;
webnote.css) FILE "$_EXEC/webnote.css";;
'') yield_page <<-EOF
[form .new action=new [button type=submit New Note]
- $(if [ "$(COOKIE pages)" ]; then
+ $(if [ "$recent" ]; then
printf '[h2 Recent Pages][ul .recent'
- for page in $(COOKIE pages); do
- [ -f "$_DATA/$(printf %s "$page" |checkid)" ] && printf '[li [a href="./%s" . %s]]' "$page" "$page"
+ for page in $recent; do
+ [ -f "$_DATA/$(printf %s "$page" |checkid)" ] \
+ && printf '[li [a href="./%s" . %s]]' "$page" "$(pagename "$page" |HTML)"
done
printf ']'
fi)
[ $REQUEST_METHOD = POST ] && case $(POST action) in
edit)
if temp=$(SLOCK "$doc"); then
- yield_page <<-EOF
+ yield_page "$(pagename "$doc" |HTML)" <<-EOF
[form method=POST
[input type=hidden name=session_key value="$SESSION_KEY"]
[button type=submit name=action value=cancel Cancel]
]
EOF
else
- yield_page <<-EOF
+ yield_page "$(pagename "$doc" |HTML) - Error" <<-EOF
[p .error .locked Someone else is already editing this Dokument. Wait a few minutes and try again. [a href="$PATH_INFO" Nothing else I can do.]]
EOF
fi
if temp=$(CHECK_SLOCK "$doc"); then
RELEASE_SLOCK "$doc"
POST document >"${doc}"
- git -C "$_DATA" commit -m "update note ${doc##*/} \"$(sed '1{s;\r;;; q;}' "$doc")\"" "${doc##*/}" >/dev/null
+ git -C "$_DATA" commit -m "update note ${doc##*/} \"$(pagename "$doc")\"" "${doc##*/}" >/dev/null
REDIRECT "$PATH_INFO"
else
- yield_page <<-EOF
+ yield_page "$(pagename "$doc" |HTML) - Error" <<-EOF
[p .error .stolen Your edit took too long and someone else is now editing this file. [a href="$PATH_INFO" Dang, I must be quicker next time!]]
[p Copy your Content for reference:]
[div .text . $(POST document |HTML)]
;;
esac
-COOKIE pages |tr \ \\n |grep -qF "${doc##*/}" \
-|| SET_COOKIE +$((90 * 86400)) pages="$(COOKIE pages && printf ' %s' "${doc##*/}" || printf '%s' "${doc##*/}")" Path="${PATH_INFO%/*}/"
+printf %s "$recent" |grep -qwF "${doc##*/}" \
+|| SET_COOKIE +$((90 * 86400)) pages="${recent}${recent+ }${doc##*/}" Path="${PATH_INFO%/*}/"
-yield_page <<-EOF
+yield_page "$(pagename "$doc" |HTML)" <<-EOF
[form method=POST
[input type=hidden name=session_key value="$SESSION_KEY"]
[button type=submit name=action value=edit Edit]