]> git.plutz.net Git - confetti/commitdiff
enabled dynamic navigation links
authorpaul <paul@plutz.net>
Wed, 18 Oct 2017 10:56:54 +0000 (10:56 +0000)
committerpaul <paul@plutz.net>
Wed, 18 Oct 2017 10:56:54 +0000 (10:56 +0000)
svn path=/trunk/; revision=159

actions/update_bookmarks.sh [new file with mode: 0755]
static/common.css
static/therapy.css
templates/frame.html.sh
templates/text_frame.sh

diff --git a/actions/update_bookmarks.sh b/actions/update_bookmarks.sh
new file mode 100755 (executable)
index 0000000..6a17d04
--- /dev/null
@@ -0,0 +1,34 @@
+#!/bin/zsh
+
+# Copyright 2017 Paul Hänsch
+#
+# This file is part of Confetti.
+# 
+# Confetti is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+# 
+# Confetti is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU Affero General Public License for more details.
+# 
+# You should have received a copy of the GNU Affero General Public License
+# along with Confetti.  If not, see <http://www.gnu.org/licenses/>. 
+
+bmfile="${_DATA}/mappings/bookmarks"
+ url="$(validate "${_POST[bm_url]}" '/.+' '/')"
+name="$(validate "${_POST[bm_name]}" '.+' "$url")"
+
+case "${_POST[submit]}" in
+  add) printf '%s\t%s\n' "${url}" "${name}" >>"${bmfile}"
+    ;;
+  del) cp "${bmfile}" "${bmfile}.temp"
+       grep -vF "${url}        ${name}" "${bmfile}.temp" >"${bmfile}"
+       rm "${bmfile}.temp"
+    ;;
+esac
+
+
+redirect "${url}"
index fa8528c1cdac0b0a7f6a15876fef3270546b85c3..bee38cdb1bd961cb314ed832a2c09b57d18405de 100644 (file)
@@ -8,7 +8,8 @@
 body {
   background: #EEE;
   margin: 0;
-  padding: 2.5em 0 0 0;
+  padding: 0;
+  padding-top: 2.5em;
 }
 .NAVIGATION {
   position: fixed;
@@ -17,11 +18,12 @@ body {
   border-style: none solid solid solid;
   border-width: 0 1px 1px 1px;
   border-radius: 0 0 4px 4px;
-  margin: 0 auto auto 3%;
-  padding: .5em 1ex .5em 1ex;
+  margin: 0 2em;
+  padding: .5em 1ex;
   background: #FFF;
   z-index: 1;
 }
+.NAVIGATION label,
 .NAVIGATION a {
   color: #008;
   border: solid 1px #BBF;
@@ -29,11 +31,46 @@ body {
   padding: .2em 3ex .2em 3ex;
   background: #EFF;
 }
+.NAVIGATION label:hover,
 .NAVIGATION a:hover {
-  border-width: 2px 1px 2px 1px;
+  border-width: 2px 1px;
   background: #F3FFFF;
 }
 
+.NAVIGATION input#navigationconfig { display: none; }
+.NAVIGATION label[for=navigationconfig] { }
+.NAVIGATION input + label + form.config {
+  position: static;
+  display: none;
+}
+.NAVIGATION .config a { display: block; }
+.NAVIGATION .config a:hover { border-width: 1px 2px; }
+.NAVIGATION input:checked + label + form.config { display: block; }
+.NAVIGATION .config input[type=text],
+.NAVIGATION .config button {
+  font-size: .875em;
+  line-height: 1.5em;
+  height: 1.75em;
+  padding: 0 .25em;
+  vertical-align: bottom;
+  border: 1px solid #000;
+  background-color: #FFF;
+}
+.NAVIGATION .config input[type=text] {
+  margin: .25em 0 0 .375em;
+  border-right: none;
+  width: 70%;
+}
+.NAVIGATION .config button {
+  min-width: 2.5em;
+  text-align: center;
+  max-width: 30%;
+}
+.NAVIGATION .config button[value=del] {
+  background: #FCC;
+}
+
+
 .trailbtn { display: none; }
 .trailbtn + .trailbox { display: none; }
 .trailbtn:checked + .trailbox { display: inline-block; }
index cdc6312d1da34b3e03a3ca96895eebcce1aabccb..9aa971e74cebd043f1971ac8b2548ea24afe6cf6 100644 (file)
@@ -22,7 +22,7 @@ body {
 
 form > button[type=submit] {
   position: fixed; display: block;
-  top: 0; left: 15em;
+  top: 0; right: 2.5em;
   height: 2.25em; padding: 0 3ex;
   font-size: 1em; font-weight: bold;
   color: #000; background-color: #FDD;
index c1d3b4c9f2be4c71779841fb9db407ff5973677f..db31ad839b92755f639e77a4191d5f43da8b3a23 100755 (executable)
@@ -1,6 +1,6 @@
 #!/bin/zsh
 
-# Copyright 2014, 2015 Paul Hänsch
+# Copyright 2014, 2015, 2017 Paul Hänsch
 #
 # This file is part of Confetti.
 # 
@@ -20,6 +20,8 @@
 . "${_EXEC}/templates/text_frame.sh"
 [ -x "${_EXEC}/templates/text_${PAGE}.sh" ] && . "${_EXEC}/templates/text_${PAGE}.sh"
 
+bmfile="${_DATA}/mappings/bookmarks"
+
 cat <<EOF
 <!Doctype HTML>
 
@@ -32,7 +34,30 @@ cat <<EOF
   </head>
   <body class="$PAGE">
     <div class="NAVIGATION">
-      $(debug NAVIGATION = "$NAVIGATION"; for each in ${NAVIGATION}; do printf %s "<a href=\"?p=${each}\">$(l10n "p_${each}")</a>"; done)
+      $(sed -rn '/^[^ ]+\t[^ ]+$/p' "$bmfile" \
+        | while read page name; do
+        printf '<a href="%s">%s</a>' "${page}" "${name}"
+      done)
+      <input  id="navigationconfig" class="config" type="checkbox" />
+      <label for="navigationconfig">$(l10n nc_edit)</label>
+      <form class="config" method="POST" action="?action=update_bookmarks">
+        $(for page in "${_EXEC}/pages/"*.sh; do
+          page="${page##*/}"
+          page="${page%.sh}"
+          printf '<a href="?p=%s">%s</a>' "${page}" "$(l10n "p_${page}")"
+        done)
+        $(if grep -qF "$REQUEST_URI" "$bmfile"; then
+          printf '<input type="hidden" name="bm_url" value="%s" />
+                  <input type="text" name="bm_name" value="%s" readonly="readonly" /
+                  ><button type="submit" name="submit" value="del">%s</button>' \
+                  "$(attribsafe ${REQUEST_URI})" "$(attribsafe $(grep -F "$REQUEST_URI " "$bmfile" |sed -r 's;.*\t;;'))" "$(l10n bm_del)"
+        else
+          printf '<input type="hidden" name="bm_url" value="%s" />
+                  <input type="text" name="bm_name" placeholder="%s" /
+                  ><button type="submit" name="submit" value="add">%s</button>' \
+                  "$(attribsafe ${REQUEST_URI})" "$(l10n Bookmark)" "$(l10n bm_add)"
+        fi)
+      </form>
     </div>
 EOF
 
index e5f2dcbf219c847808edeee2ff7c254a9610857c..36465eefb33bf157f31a053ccecf4df1cb27c664 100755 (executable)
@@ -21,6 +21,10 @@ item_name[p_error]="Fehler"
 item_name[p_categories]="Kategorien"
 item_name[p_prescriptions]="Verschreibungen"
 item_name[p_therapy]="Therapie"
+item_name[nc_edit]="&#x2699;"
+#item_name[nc_edit]="&#9776;"
+item_name[bm_add]="+"
+item_name[bm_del]="-"
 
 case $PROFILE in
 medical)