tazweb annotate lib/helper.sh @ rev 192

helper.sh: add bookmarks handler
author Christophe Lincoln <pankso@slitaz.org>
date Thu Mar 16 00:20:44 2017 +0100 (2017-03-16)
parents 33e0f5920655
children a41749316ea9
rev   line source
pankso@179 1 #!/bin/sh
pankso@179 2 #
pankso@179 3 # TazWeb Helper - Handle bookmarks and cookies
pankso@179 4 #
pankso@179 5 # Coding: No libtaz.sh and so it is usable on any Linux distro
pankso@179 6 #
pankso@179 7 # Copyright (C) 2017 SliTaz GNU/Linux - BSD License
pankso@179 8 # See AUTHORS and LICENSE for detailed information
pankso@179 9 #
pankso@179 10
pankso@179 11 config="$HOME/.config/tazweb"
pankso@179 12 bm_txt="$config/bookmarks.txt"
pankso@179 13 bm_html="$config/bookmarks.html"
pankso@179 14 cookies_txt="$config/cookies.txt"
pankso@179 15 cookies_html="$config/cookies.html"
pankso@179 16
al@188 17 export TEXTDOMAIN='tazweb'
pankso@179 18
pankso@179 19 # Parse cmdline options and store values in a variable
al@188 20 for opt in $@; do
pankso@179 21 opt_name="${opt%%=*}"
pankso@179 22 opt_name="${opt_name#--}"
pankso@179 23 case "$opt" in
pankso@179 24 --*=*) export $opt_name="${opt#*=}" ;;
pankso@179 25 --*) export $opt_name="on" ;;
pankso@179 26 esac
pankso@179 27 done
pankso@179 28
pankso@179 29 # HTML 5 header with built-in minimal CSS. Usage: html_header "title"
pankso@179 30 html_header() {
pankso@179 31 local title="$1"
al@188 32 cat <<EOT
pankso@179 33 <!DOCTYPE html>
pankso@179 34 <html lang="en">
pankso@179 35 <head>
al@188 36 <meta charset="UTF-8">
pankso@179 37 <title>$title</title>
al@188 38 <style>
al@188 39 body { margin: 2% 10%; font-size: 92%; }
al@188 40 h1 { color: #CCC; border-bottom: 2px solid #CCC; }
al@188 41 ul { padding: 0; }
pankso@179 42 ul a { text-decoration: none; } ul a:hover { text-decoration: underline; }
pankso@179 43 li { list-style-type: none; line-height: 1.4em; padding: 0; }
al@188 44 footer { font-size: 80%; border-top: 2px solid #CCC; padding: 5px 0; color: #888; }
pankso@179 45 </style>
pankso@179 46 </head>
pankso@179 47 <body>
al@188 48 <section id="content">
al@188 49 <h1>$title</h1>
pankso@179 50 EOT
pankso@179 51 }
pankso@179 52
pankso@179 53 # HTML 5 footer: html_footer content
pankso@179 54 html_footer() {
al@188 55 cat <<EOT
al@188 56 </section>
al@188 57 <footer>
al@188 58 $@
al@188 59 </footer>
pankso@179 60 </body>
pankso@179 61 </html>
pankso@179 62 EOT
pankso@179 63 }
pankso@179 64
pankso@179 65 # Generate bookmarks.html
pankso@179 66 html_bookmarks() {
al@188 67 {
al@188 68 html_header "$(gettext 'Bookmarks')"
al@188 69 echo '<ul>'
al@188 70
al@188 71 IFS="|"
al@188 72 while read title url null; do
al@188 73 echo "<li><a href=\"$url\">$title</a></li>"
pankso@192 74 done < ${bm_txt}
al@188 75 unset IFS
al@188 76
al@188 77 echo '</ul>'
al@191 78 num=$(wc -l < $bm_txt)
al@191 79 html_footer "$(printf "$(ngettext "%d bookmark" "%d bookmarks" "$num")" "$num") - $(date)"
pankso@192 80 } > ${bm_html}
al@188 81
pankso@179 82 # Security fix from old cgi-bin bookmarks.cgi
pankso@192 83 chown $USER:$USER ${bm_txt}; chmod 0600 ${bm_txt}
pankso@179 84 }
pankso@179 85
pankso@192 86 # List all bookmarks
pankso@192 87 bookmarks_list() {
pankso@192 88 cat ${bm_txt} | while read title url; do
pankso@192 89 echo -e "$title\n$url"
pankso@192 90 done | yad --list \
pankso@192 91 --title="$(gettext 'TazWeb Bookmarks')" \
pankso@192 92 --text-align=center \
pankso@192 93 --text="$(gettext 'Click on a value to edit - Right click to remove a bookmark')\n" \
pankso@192 94 --mouse --width=640 --height=480 \
pankso@192 95 --skip-taskbar \
pankso@192 96 --window-icon=/usr/share/icons/hicolor/32x32/apps/tazweb.png \
pankso@192 97 --editable --print-all \
pankso@192 98 --tooltip-column=2 \
pankso@192 99 --search-column=1 \
pankso@192 100 --column="$(gettext 'Title')" \
pankso@192 101 --column="$(gettext 'URL')"
pankso@192 102 }
pankso@192 103
pankso@192 104 # Rebuilt bookmarks.txt since some entry may have been edited and remove
pankso@192 105 # selected (TRUE) entries.
pankso@192 106 bookmarks_handler() {
pankso@192 107 IFS="|"
pankso@192 108 bookmarks_list | while read title url null; do
pankso@192 109 echo "$title|$url" >> ${bm_txt}.tmp
pankso@192 110 done; unset IFS
pankso@192 111 if [ -f "${bm_txt}.tmp" ]; then
pankso@192 112 mv -f ${bm_txt}.tmp ${bm_txt}
pankso@192 113 fi
pankso@179 114 }
pankso@179 115
pankso@179 116 # Generate cookies.html (for direct view of cookies in TazWeb)
pankso@179 117 html_cookies() {
al@188 118 {
al@188 119 html_header "$(gettext 'Cookies')"
al@188 120 echo '<pre>'
al@188 121
al@188 122 IFS="|"
al@188 123 while read line; do
al@188 124 echo "${line#\#HttpOnly_}"
pankso@192 125 done < ${cookies_txt}
al@188 126 unset IFS
al@188 127
al@188 128 echo '</pre>'
al@191 129 num=$(wc -l < $cookies_txt)
al@191 130 html_footer "$(printf "$(ngettext "%d cookie" "%d cookies" "$num")" "$num") - $(date)"
pankso@192 131 } > ${cookies_html}
pankso@179 132 }
pankso@179 133
pankso@179 134 clean_cookies() {
pankso@192 135 rm ${cookies_txt}; touch ${cookies_txt}
pankso@179 136 }
pankso@179 137
pankso@179 138 #
pankso@179 139 # Execute any shell_function
pankso@179 140 #
pankso@179 141 case "$1" in
pankso@179 142
al@188 143 *_*)
pankso@192 144 cmd=${1}; shift; ${cmd} ${@} ;;
pankso@179 145
al@188 146 *) grep "[a-z]_*()" $0 | awk '{print $1}' ;;
al@188 147
al@188 148 esac
al@188 149 exit 0