From 28ce309347435c1dd23beab8104d36cbe640d2dd Mon Sep 17 00:00:00 2001 From: paul Date: Sat, 9 Dec 2017 18:24:53 +0000 Subject: [PATCH] bookmark creation dialog svn path=/trunk/; revision=14 --- bookmarks.css | 58 +++++++++++++++------------------------ index.cgi | 76 ++++++++++++++++++++++++++++++++++++++++----------- 2 files changed, 82 insertions(+), 52 deletions(-) diff --git a/bookmarks.css b/bookmarks.css index 6c6b54b..e37d70a 100644 --- a/bookmarks.css +++ b/bookmarks.css @@ -45,8 +45,7 @@ html, body { color: #333; } -.modbookmark, -.modfolder { +.dialog { display: block; position: fixed; width: 30em; @@ -55,15 +54,14 @@ html, body { left: 50%; top: 20%; margin: -3em -15em; text-align: center; - z-index: 3; + z-index: 10; border-radius: .5em; border: 1px solid black; padding: .125em 0; background-color: #ACF; word-spacing: -.5ex; } -.modbookmark:before, -.modfolder:before { +.dialog:before { display: block; content: ''; border: 1px solid black; @@ -74,69 +72,61 @@ html, body { background-color: white; z-index: -1; } -.modbookmark + *:after, -.modfolder + *:after { +.newbookmark:before { border-top: 1px solid; } +.dialog + *:after { content: ' '; position: fixed; top: 0; bottom: 0; left: 0; right: 0; background-color: rgba(0,0,0,.5); } -.modbookmark > *, -.modfolder > * { word-spacing: 0; } +.dialog > * { word-spacing: 0; } -.modbookmark > h1, -.modfolder > h1 { +.dialog > h1 { background-color: transparent; text-align: left; font-weight: bold; padding-left: .25em; } -.modbookmark > .tab, -.modfolder > .tab { +.dialog > .tab { display: inline-block; width: 33%; padding: .25em; border: 1px solid black; border-radius: .5em .5em 0 0; } -.modbookmark > .tab { +.dialog.modbookmark > .tab { width: 49.5%; } -.modbookmark > label.tab, -.modfolder > label.tab { border-bottom: 0px; } -.modbookmark > a.tab, -.modfolder > a.tab { background-color: #EEE; } +.dialog > label.tab { border-bottom: 0px; } +.dialog > a.tab { background-color: #EEE; } -.modbookmark > label:nth-of-type(2), -.modbookmark > label:nth-of-type(3), -.modbookmark > select, -.modfolder > label:nth-of-type(2), -.modfolder > select, +.newbookmark > label, +.dialog > label:nth-of-type(2), +.dialog > label:nth-of-type(3), +.dialog > select, .modfolder > input { display: block; float: left; text-align: left; margin: 1em 0 0 1em; } -.modbookmark > label:nth-of-type(2), -.modbookmark > label:nth-of-type(3), -.modfolder > label:nth-of-type(2) { +.newbookmark > label, +.dialog > label:nth-of-type(3), +.dialog > label:nth-of-type(2) { + clear: left; font-weight: bold; } -.modbookmark > select, -.modfolder > select { +.dialog > select { width: 10em; max-width: 95%; } -.modbookmark > input, -.modfolder > input { +.dialog > input { width: 28em; max-width: 95%; } -.modbookmark > button, .modbookmark > select, -.modfolder > button { +.dialog > button { display: inline-block; float: right; margin: 1.5em .5em .5em .5em; @@ -181,7 +171,3 @@ html, body { margin: 0 .5ex; } -form.newbookmark { - margin: .5em 1em; - break-inside: avoid; -} diff --git a/index.cgi b/index.cgi index 4f24149..911e5ee 100755 --- a/index.cgi +++ b/index.cgi @@ -173,7 +173,10 @@ case "$(GET action)" in file="${BDB}/${fid}.bm" tfile="${BDB}/${target}.bm" if [ "$(POST control)" = confirm -a -f "$file" ]; then - if [ "$target" = "____________" ] || tail -n+2 "$file" >>"$tfile"; then + if [ "$target" = "____________" ]; then + rm -f "$file" >&- + git -C "${BDB}" commit -m "Deleted folder ${fid}" -- "${fid}.bm" >&- + elif tail -n+2 "$file" >>"$tfile"; then rm -f "$file" >&- git -C "${BDB}" commit -m "Deleted folder ${fid}" -- "${fid}.bm" "${target}.bm" >&- fi @@ -202,12 +205,19 @@ case "$(GET action)" in url="$(POST url |head -n1)" file="${BDB}/${fid}.bm" bid="$(timeid)" - if [ -n "$name" -a -f "${file}" ]; then + ctl="$(POST control)" + [ "$url" = "${url#*://}" ] && url="http://$url" + + if [ -n "$name" -a -n "$url" -a -f "${file}" -a "$ctl" = "confirm" ]; then printf '%s\t%s\t%s\n' "$bid" "$(HTML "$name")" "$url" >>"${file}" git -C "${BDB}" commit -m "New Bookmark: ${name} in ${fid}" -- "${fid}.bm" >&- + getFavicon "$url" "$bid" + REDIRECT "${SCRIPT_NAME}#${fid}" + elif [ "$ctl" = "confirm" ]; then + REDIRECT "${SCRIPT_NAME}?newbm=${fid}&nbmurl=${url}&nbmname=${name}" + else + REDIRECT "${SCRIPT_NAME}#${fid}" fi - getFavicon "$url" "$bid" - REDIRECT "${SCRIPT_NAME}#${fid}" ;; modbookmark) bid="$(POST bid | checkid)" @@ -272,6 +282,44 @@ case "$(GET action)" in ;; esac +bookmarkgen(){ + fid="$(GET newbm |checkid)" + name="$(GET nbmname)" + url="$(GET nbmurl)" + file="${BDB}/${fid}.bm" + + [ "$url" = "${url#*://}" ] && url="http://$url" + if [ -z "$name" -a -n "$url" ]; then + name="$(wget -O- "$url" \ + | head -c4096 \ + | sed -rn ':X;$bY;N;bX;:Y; s;^.*]*>([^<]+)<.*$;\1;p;' + )" + fi + + if [ -n "$fid" -o -n "$name" -o -n "$url" ]; then + cat <<-EOF +
+

New Bookmark

+ + + + + + + + +
+ EOF + fi +} + bookmarkmod(){ bmod="$(GET bmodify |checkid)" bmove="$(GET bmove |checkid)" @@ -282,7 +330,7 @@ bookmarkmod(){ $(grep -m1 "^${bmod}" "$file") EOF cat <<-EOF -
+

Modify: ${name}

@@ -301,7 +349,7 @@ bookmarkmod(){ $(grep -m1 "^${bmove}" "$file") EOF cat <<-EOF - +

Move: ${name}

Modify @@ -358,7 +406,7 @@ foldermod(){ if [ -n "$fmodify" ]; then read fid fname order <"${BDB}/${fmodify}.bm" cat <<-EOF - +

Rename Folder: ${fname}

@@ -374,7 +422,7 @@ foldermod(){ elif [ -n "$fdelete" ]; then read fid fname order <"${BDB}/${fdelete}.bm" cat <<-EOF - +

Delete Folder: ${fname}

Rename @@ -393,7 +441,7 @@ foldermod(){ elif [ -n "$fmove" ]; then read fid fname order <"${BDB}/${fmove}.bm" cat <<-EOF - +

Move Folder: ${fname}

Rename @@ -416,7 +464,7 @@ show_folders(){ | while read fid fname order; do file="${BDB}/${fid}.bm" cache="${BDB}/${fid}.cache" - if [ "${cache}" -nt "${file}" ]; then + if [ "${cache}" -nt "${file}" -a "${cache}" -nt "$0" ]; then cat "$cache" else tee "$cache" <<-EOF @@ -424,12 +472,7 @@ show_folders(){

${fname}

Modify folder "${fname}" $(show_bookmarks "$fid") - - - - - -
+ New Bookmark EOF fi @@ -447,6 +490,7 @@ cat < $(foldermod) $(bookmarkmod) + $(bookmarkgen) $(show_folders)
-- 2.39.2