]> git.plutz.net Git - confetti/commitdiff
remove obsolete sections cgilite
authorPaul Hänsch <paul@plutz.net>
Sat, 6 Feb 2021 22:45:45 +0000 (23:45 +0100)
committerPaul Hänsch <paul@plutz.net>
Sat, 6 Feb 2021 22:45:45 +0000 (23:45 +0100)
20 files changed:
email/email.css [deleted file]
email/email.html.sh [deleted file]
email/email.sh [deleted file]
prescriptions/edit_prescription.sh [deleted file]
prescriptions/new_prescription.sh [deleted file]
prescriptions/prescriptions.css [deleted file]
prescriptions/prescriptions.html.sh [deleted file]
prescriptions/prescriptions.sh [deleted file]
prescriptions/text_prescriptions.sh [deleted file]
prescriptions/update_prescription.sh [deleted file]
prescriptions/view_prescription.sh [deleted file]
therapy/text_therapy.sh [deleted file]
therapy/therapy.css [deleted file]
therapy/therapy.html.sh [deleted file]
therapy/therapy.sh [deleted file]
therapy/therapy_background.png [deleted file]
therapy/therapy_background.xcf [deleted file]
therapy/therapy_draw.js [deleted file]
therapy/update_therapy.sh [deleted file]
update_bookmarks.sh [deleted file]

diff --git a/email/email.css b/email/email.css
deleted file mode 100644 (file)
index e935189..0000000
+++ /dev/null
@@ -1,157 +0,0 @@
-/*
-# Copyright 2014 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/>. 
-*/
-
-.filter {
-  display: block;
-  width: 128ex;
-  border-width: 1px;
-  border-style: solid;
-  border-radius: 4px 4px 0 0;
-  margin: .5em auto .25em auto;
-  padding: .25em 1ex .25em 1ex;
-  background: #EFF;
-}
-
-.filter > .label {
-  display: block;
-  font-weight: bold;
-  font-size: 1.2em;
-  border-style: none none solid none;
-  border-width: 1px;
-  margin: 0em 0ex .5em 0ex;
-  background: #EEF;
-}
-
-.filter .search {
-  margin: 0em 2ex .5em 2ex;
-}
-.filter .search .label {
-  display: inline-block;
-  width: 12ex;
-  font-weight: bold;
-  margin-top: .5em;
-}
-.filter .search input[type="radio"] {
-  margin-top: .5em;
-  margin-left: 1ex;
-}
-.filter .search button {
-  margin-top: .5em;
-}
-
-.filter .search input[type="text"] {
-  width: 124ex;
-}
-
-.newcard {
-  display: block;
-  width: 126ex;
-  border-width: 1px;
-  border-style: solid;
-  border-radius: 0 0 4px 4px;
-  margin: .25em auto 1em auto;
-  padding: .25em 2ex .25em 2ex;
-  background: #EFF;
-}
-
-.cardlist .card {
-  display: block;
-  width: 130ex;
-  border-style: solid;
-  border-width: 1px;
-  margin: .25em auto;
-  padding: 0;
-  overflow: auto;
-  background: #FFF;
-}
-
-.cardlist .card .section {
-  display: inline-block;
-  float:left;
-  width: 20ex;
-  margin: .125em .25ex .5ex .25ex;
-  padding: 0 .2em .2em .2em;
-  background: #EEE;
-}
-.cardlist .card .section a.attendance {
-  display: inline-block;
-  margin-right: 1ex;
-  word-wrap: break-word;
-}
-
-.cardlist .card .attendance {
-  width: 83.5ex;
-}
-.cardlist .card .attendance .check {
-  display: inline-block;
-  width: 27ex;
-}
-
-.cardlist .card .control {
-  float: right;
-  text-align: right;
-  margin-right: 0;
-  background: #EEF;
-}
-.cardlist .card .control .item {
-  color: #008;
-  margin-top: .2em;
-  margin-right: 1ex;
-}
-.cardlist .card .control a.item {
-  min-width: 10ex;
-  border-style: solid double solid solid;
-  border-width: 1px 3px 1px 1px;
-  border-color: #000;
-  padding: .1em 1ex;
-  background: #FFF;
-}
-.cardlist .card .control a.item:hover{
-  border-width: 1px 1px 1px 1px;
-}
-
-.cardlist .card .section .sectitle {
-  display: block;
-  font-weight: bold;
-  margin: .2em .2em .2em .2em;
-}
-
-.cardlist .card .section .item {
-  display: block;
-  max-width: 20ex;
-  word-wrap: break-word;
-}
-
-.cardlist .card .section textarea.NOTE {
-  min-height: 6em;
-}
-.cardlist .card .section textarea.ADR {
-  min-height: 4em;
-}
-
-.cardlist .card .section .PHOTO {
-  width: 20ex;
-  max-heigth: 30ex;
-}
-
-.cardlist .card .section .FN {
-  font-weight: bold;
-  font-size: 1.2em;
-}
-
diff --git a/email/email.html.sh b/email/email.html.sh
deleted file mode 100755 (executable)
index 7f93893..0000000
+++ /dev/null
@@ -1,57 +0,0 @@
-# Copyright 2014 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/>. 
-
-cat <<EOF
-<div class="select">
-  <span class="label">$(l10n filter_label)</span>
-  <form class="search" action="?action=select_mailing" method="POST">
-
-    <div class="selectlist">
-      <span class="label">$(l10n select_courses):</span>
-      <select name="courses" multiple="multiple">
-       $(listcourses |while read course; do
-         name="$(sed -rn 's:^SUMMARY(;.+)*\:(.*)\r$:\2:p' "$_DATA/ical/$course")"
-         echo '<option value="'$course'">'$name'</option>'
-       done)
-      </select>'
-    </div>
-
-    <div class="selectlist">
-      <span class="label">$(l10n select_attendees):</span>
-      <select name="courses" multiple="multiple">
-       $(listcards |while read card; do
-         n_last="$(  sed -rn 's:^N(;.+)*\:([^;]*;){0} *([^;]*).*$:\3:p' "$_DATA/vcard/$card")"
-         n_first="$( sed -rn 's:^N(;.+)*\:([^;]*;){1} *([^;]*).*$:\3:p' "$_DATA/vcard/$card")"
-         n_middle="$(sed -rn 's:^N(;.+)*\:([^;]*;){2} *([^;]*).*$:\3:p' "$_DATA/vcard/$card")"
-         n_pre="$(   sed -rn 's:^N(;.+)*\:([^;]*;){3} *([^;]*).*$:\3:p' "$_DATA/vcard/$card")"
-         n_post="$(  sed -rn 's:^N(;.+)*\:([^;]*;){4} *([^;]*).*$:\3:p' "$_DATA/vcard/$card")"
-         name="${n_pre} ${n_first} ${n_middle} ${n_last} ${n_post}"
-         echo '<option value="'$card'">'$name'</option>'
-       done)
-      </select>'
-    </div>
-
-    <button type="submit" name="choice" value="new_selection">$(l10n selection_apply)</button>
-    <button type="submit" name="choice" value="del_selection">$(l10n selection_clear)</button>
-  </form>
-</div>
-
-<div class="maillist">
-</div>
-EOF
-
-# vi:set filetype=html:
diff --git a/email/email.sh b/email/email.sh
deleted file mode 100755 (executable)
index c79876f..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-#!/bin/zsh
-
-# Copyright 2014 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/>. 
-
-[ -z "${_GET[order]}" ] && _GET[order]=DOW
-
-listcards() {
-  ls -1 ${_DATA}/vcard/*vcf 2>/dev/null |while read file; do
-    fn=$(sed -rn 's:^N(;.+)*\:([^;]*;){1} *([^;]*).*$:\3:p' "$file")
-    echo "$fn\t$file"
-  done |sort |sed -r 's:^.*\t(.*/)([^/]+)$:\2:'
-}
-
-listcourses() {
-  ls -1 ${_DATA}/ical/*ics |while read file; do
-    icstime="$(sed -rn 's:^DTSTART\:(TZID=.*\:)?([0-9]{4})([0-9]{2})([0-9]{2})T([0-9]{2})([0-9]{2})([0-9]{2})Z?\r$:\2-\3-\4 \5\:\6\:\7:p' "$file")"
-    echo "$(date -d "$icstime" "+%u %H%M%S")\t$file"
-  done |sort |sed -r 's:^.*\t(.*/)([^/]+)$:\2:'
-}
diff --git a/prescriptions/edit_prescription.sh b/prescriptions/edit_prescription.sh
deleted file mode 100755 (executable)
index b7a9af4..0000000
+++ /dev/null
@@ -1,175 +0,0 @@
-# Copyright 2016 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/>. 
-
-check(){ [ "$1" = "$2" ] && printf checked}
-[ -z $mpx[presctype] ] && mpx[presctype]=doctor_compulsory
-
-cat <<END_HTML
-<form class="prescription" action="?action=update_prescription" method="POST">
-<input type="hidden" name="prescription" value="${mpx[prescription]}">
-
-<label class=presctype>$(l10n doctor):</label>
-<input type=radio name=presctype id=doctor_selfpaid value=doctor_selfpaid $(check "$mpx[presctype]" doctor_selfpaid)>
-<label for=doctor_selfpaid>$(l10n selfpaid)</label>
-<input type=radio name=presctype id=doctor_private value=doctor_private $(check "$mpx[presctype]" doctor_private)>
-<label for=doctor_private>$(l10n private)</label>
-<input type=radio name=presctype id=doctor_compulsory value=doctor_compulsory $(check "$mpx[presctype]" doctor_compulsory)>
-<label for=doctor_compulsory>$(l10n compulsory)</label>
-<br>
-
-<label class=presctype>$(l10n dentist):</label>
-<input type=radio name=presctype id=dentist_selfpaid value=dentist_selfpaid $(check "$mpx[presctype]" dentist_selfpaid)>
-<label for=dentist_selfpaid>$(l10n selfpaid)</label>
-<input type=radio name=presctype id=dentist_private value=dentist_private $(check "$mpx[presctype]" dentist_private)>
-<label for=dentist_private>$(l10n private)</label>
-<input type=radio name=presctype id=dentist_compulsory value=dentist_compulsory $(check "$mpx[presctype]" dentist_compulsory)>
-<label for=dentist_compulsory>$(l10n compulsory)</label>
-<br>
-
-<label class=presctype>$(l10n noprescription):</label>
-<input type=radio name=presctype id=noprescription_selfpaid value=noprescription_selfpaid $(check "$mpx[presctype]" noprescription_selfpaid)>
-<label for=noprescription_selfpaid>$(l10n selfpaid)</label>
-<br>
-
-<label class=presctype>$(l10n altpractition):</label>
-<input type=radio name=presctype id=altpractition_selfpaid value=altpractition_selfpaid $(check "$mpx[presctype]" altpractition_selfpaid)>
-<label for=altpractition_selfpaid>$(l10n selfpaid)</label>
-<input type=radio name=presctype id=altpractition_private value=altpractition_private $(check "$mpx[presctype]" altpractition_private)>
-<label for=altpractition_private>$(l10n private)</label>
-<br>
-
-<fieldset class="baseinfo">
-<label for="insurance">$(l10n insurance)</label>
-<input id="insurance" name="insurance" value="${mpx[insurance]}" placeholder="$(l10n insurance)">
-<br>
-<label for="name">$(l10n name)</label>
-<label for="bday">$(l10n bday)</label>
-<br>
-<textarea id="name" name="name" placeholder="$(l10n name)">${mpx[name]}</textarea>
-<input id="bday" name="bday" value="${mpx[bday]}" placeholder="$(l10n bday)">
-
-<br>
-<label for="date">$(l10n date)</label>
-<input id="date" name="date" value="${mpx[date]}" placeholder="$(l10n date)">
-</fieldset>
-
-<fieldset class="misc">
-<h1 id="${mpx[prescription]}">$(l10n therapy_prescription)</h1>
-
-<label for="addcontrib">$(l10n addcontrib)</label>
-<input id="addcontrib" name="addcontrib" value="${mpx[addcontrib]}" placeholder="$(l10n addcontrib)">
-<label for="contribconfirm">$(l10n contribconfirm)</label>
-<input id="contribconfirm" name="contribconfirm" value="${mpx[contribconfirm]}" placeholder="$(l10n contribconfirm)">
-<input type="checkbox" id="contribreceipt" name="contribreceipt" value="true" ${mpx[contribreceipt]:+checked}>
-<label for="contribreceipt">$(l10n contribreceipt)</label>
-</fieldset>
-
-<input type="checkbox" id="prescreviewed" name="prescreviewed" value="true" ${mpx[prescreviewed]:+checked}>
-<label for="prescreviewed">$(l10n prescreviewed)</label>
-
-<fieldset class="catalogue">
-<h2>$(l10n prescription_by_catalogue)</h2>
-<input type="radio" id="prescfirst" name="prescno" value="first" $(check "$mpx[prescno]" first)>
-<label for="prescfirst">$(l10n prescfirst)</label>
-<br>
-<input type="radio" id="prescfollow1" name="prescno" value="follow1" $(check "$mpx[prescno]" follow1)>
-<label for="prescfollow1">$(l10n prescfollow1)</label>
-<br>
-<input type="radio" id="prescfollow2" name="prescno" value="follow2" $(check "$mpx[prescno]" follow2)>
-<label for="prescfollow2">$(l10n prescfollow2)</label>
-<br>
-<input type="radio" id="prescother" name="prescno" value="other" $(check "$mpx[prescno]" other)>
-<label for="prescother">$(l10n prescother)</label>
-<br>
-<input type="radio" id="presccontinual" name="prescno" value="continual" $(check "$mpx[prescno]" continual)>
-<label for="presccontinual">$(l10n presccontinual)</label>
-
-<br>
-<input type="checkbox" id="grouptherapy" name="grouptherapy" value="true" ${mpx[grouptherapy]:+checked}>
-<label for="grouptherapy">$(l10n grouptherapy)</label>
-<br>
-<input type="checkbox" id="housecall" name="housecall" value="true" ${mpx[housecall]:+checked}>
-<label for="housecall">$(l10n housecall)</label>
-<br>
-<input type="checkbox" id="report" name="report" value="true" ${mpx[report]:+checked}>
-<label for="report">$(l10n report)</label>
-</fieldset>
-
-<fieldset class="description">
-<label for="quantity">$(l10n quantity)</label>
-<label for="remidy">$(l10n remidy)</label>
-<label for="quantity_weekly">$(l10n quantity_weekly)</label>
-<p>
-<input id="quantity" name="quantity" value="${mpx[quantity]}" placeholder="$(l10n quantity)">
-<textarea id="remidy" name="remidy" placeholder="$(l10n remidy)">${mpx[remidy]}</textarea>
-<input id="quantity_weekly" name="quantity_weekly" value="${mpx[quantity_weekly]}" placeholder="$(l10n quantity_weekly)">
-</p>
-
-$( for n in {0..10}; do
-  if [ "$n" -eq 0 -o -n "${mpx[quantity$n]}" -o -n "${mpx[remidy$n]}" -o -n "${mpx[quantity_weekly$n]}" ]; then
-    printf '<input class="trailbtn" type="checkbox" checked="checked" />'
-  else
-    printf '<input class="trailbtn" type="checkbox" />'
-  fi
-  printf '<p class="trailbox">
-    <input class="quantity" name="quantity" placeholder="%s" value="%s">
-    <textarea class="remidy" name="remidy" placeholder="%s">%s</textarea>
-    <input class="quantity_weekly" name="quantity_weekly" placeholder="%s" value="%s">
-    </p>
-  ' "$(l10n quantity)" "${mpx[quantity$n]}" \
-    "$(l10n remidy)" "${mpx[remidy$n]}" \
-    "$(l10n quantity_weekly)" "${mpx[quantity_weekly$n]}"
-done )
-
-<br>
-<p class="indicator_codes">
-<label for="indicator">$(l10n indicator)</label>
-<input id="indicator" name="indicator" value="${mpx[indicator]}" placeholder="$(l10n indicator)">
-<br>
-<label for="icd10">$(l10n icd10)</label>
-<input id="icd10" name="icd10" value="${mpx[icd10]}" placeholder="$(l10n icd10)">
-</p>
-<br>
-<p class="indicator_reading">
-<label for="indicator_reading">$(l10n indicator_reading)</label>
-<textarea id="indicator_reading" name="indicator_reading" placeholder="$(l10n indicator_reading)">${mpx[indicator_reading]}</textarea>
-</p>
-<br>
-<p class="issuer">
-  <label>$(l10n issuer)</label>
-  <input type="radio" name="issuer_select" value="list" id="issuer_select_list" checked /><label for="issuer_select_list">$(l10n issuer_from_list)</label><!--
-  --><input type="radio" name="issuer_select" value="other" id="issuer_other"><label for="issuer_other">$(l10n issuer_other)</label>
-  <select class="item" name="issuer">
-    <option value="" disabled="disabled" $([ -z "${mpx[issuer]}" ] && printf 'selected' )>$(l10n issuer)...</option>
-    $(list_prescription_issuers |while read f; do
-      [ "$f" = "$mpx[issuer]" ] \
-      && printf '<option value="%s" selected>%s</option>' "$f" "$f" \
-      || printf '<option value="%s">%s</option>' "$f" "$f"
-    done)
-  </select>
-  <input type="text" name="issuer_other" value="" placeholder="$(l10n issuer)..." />
-</p>
-</fieldset>
-
-<fieldset class="controls">
-<button type="submit" name="action" value="save">$(l10n save)</button>
-<button type="submit" name="action" value="cancel">$(l10n cancel)</button>
-<button type="submit" name="action" value="delete">$(l10n delete)</button>
-</fieldset>
-
-</form>
-END_HTML
diff --git a/prescriptions/new_prescription.sh b/prescriptions/new_prescription.sh
deleted file mode 100755 (executable)
index 26173af..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-#!/bin/zsh
-
-# Copyright 2016 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/>. 
-
-cgi_refdata
-
-client="${_POST[client]:-${_GET[client]}}"
-
-uid=$(uuidgenerator)
-prescription="${client%.vcf}.${uid}.mpx"
-
-cardfile="$_DATA/vcard/$client"
-tempfile="$_DATA/temp/$prescription"
-
-cat >"$tempfile" <<EOF
-prescription:${prescription}
-insurance:$(sed -nr 's;^X-HEALTH-INSURANCE:(.*)\;.*\;\r?$;\1;p' "$cardfile")
-bday:$(sed -nr 's;^BDAY:(.*)\r?$;\1;p' "$cardfile")
-name:$(sed -rn '/^N[\;:]/{s;^N(\;[^:]*)?:([^\;]*)(\;[^\;]*)(\;[^\;]*)?(\;[^\;]*)?(\;[^\;]*)?\r?$;\5 \3 \4 \2 \6;;s;[\;,]; ;g;s; +; ;g;s;^ | $;;g;p}' "$cardfile")\n$(sed -nr 's;^ADR:(.*)\r?$;\1;p' "$cardfile")
-date:
-EOF
-
-echo -n "Location: ?p=prescriptions&edit=$prescription\n\n"
diff --git a/prescriptions/prescriptions.css b/prescriptions/prescriptions.css
deleted file mode 100644 (file)
index 6eebe24..0000000
+++ /dev/null
@@ -1,298 +0,0 @@
-/*
-# Copyright 2016 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/>. 
-*/
-
-@import url("?static=cards.css");
-
-body {padding-bottom: 3em; }
-
-.trailbtn { display: none; }
-.trailbtn + .trailbox { display: none; }
-.trailbtn:checked + .trailbox { display: inline-block; }
-.trailbtn:checked + .trailbox + .trailbtn { display: block; }
-.trailbtn:checked + .trailbox + .trailbtn:before {
-   display: block; content: '+';
-   width: 3ex; text-align: center;
-   margin-top: .25em; padding: .25em 0;
-   background-color: #FFF;
-   border-width: 1px; border-style: solid;
-}
-.trailbtn:checked + .trailbox + .trailbtn:checked,
-.trailbtn:checked { display: none; }
-
-.prescription {
-  display: inline-block;
-  width: 96%; max-width: 460px;
-  color: #800;
-  background-color: #DDD;
-  margin: 1em -1% 0 2%; padding: 0;
-  border: 1px solid #888;
-  overflow: hidden;
-  vertical-align: top;
-}
-form.prescription { padding-top: 1ex;}
-
-.newprescription {
-  display: block;
-  margin: 0 2em; padding: .5ex 2ex;
-  background-color: #CFF;
-  border: 1px solid #888;
-  border-radius: 0 0 1ex 1ex;
-}
-
-.prescription * {
-  display: inline-block;
-  font-size: 1em;
-  line-height: 1em;
-  margin: 0; padding: 0;
-}
-.prescription label {
-  padding-left: .5ex;
-  font-size: .75em;
-}
-
-.prescription fieldset {
-  display: inline-block;
-  margin: 0; padding: 1ex;
-  margin-right: -.625ex;
-  border: none;
-  vertical-align: top;
-}
-.prescription fieldset br { display: none;}
-
-.prescription span,
-.prescription input,
-.prescription textarea {
-  height: 1.5em;
-  border: 1px solid #800;
-  padding: .25ex;
-  background-color: #FFF;
-}
-.prescription span {
-  background-color: #EEE;
-  padding: .5ex .25ex;
-  white-space: pre-wrap;
-  font-size: .75em;
-  overflow: hidden;
-}
-
-.prescription input[type=checkbox],
-.prescription input[type=radio] { display: none;}
-
-.prescription label.checkbox,
-.prescription label.radio,
-.prescription input[type=checkbox] + label,
-.prescription input[type=radio] + label { padding-left: 1.25em; font-size: 1em;}
-
-.prescription label.checkbox:before,
-.prescription label.radio:before,
-.prescription input[type=checkbox] + label:before,
-.prescription input[type=radio] + label:before {
-  display: inline-block;
-  position: absolute;
-  margin-left: -1.25em;
-  width: .75em; height: .75em;
-  background-color: #FFF;
-  border: 1px solid #800;
-  content: ' ';
-}
-.prescription label.radio:before,
-.prescription input[type=radio] + label:before { border-radius: .5em;}
-.prescription label.checkbox.checked:before,
-.prescription label.radio.checked:before,
-.prescription input[type=checkbox]:checked + label:before,
-.prescription input[type=radio]:checked + label:before { content: "\2713";}
-
-.prescription a.button,
-.prescription input[type=submit],
-.prescription button {
-  height: 1.5em;
-  color: #FFF;
-  background-color: #800;
-  text-align: center;
-  text-decoration: none;
-  margin: 0; padding: .125em 0 0 0;
-  border: none;
-}
-.prescription a.button {padding: .5ex;}
-
-/* ======== Specific ========== */
-
-.prescription label.presctype,
-.prescription input[name=presctype] + label {
-  font-size: medium;
-  width: 22%;
-  margin: 0; margin-right: -.5ex;
-  vertical-align: top;
-  padding: .25em .5ex .25em 3ex;
-  height: 2.5em;
-  border-top: 1px solid #DDD;
-}
-.prescription label.presctype {
-  text-align: right;
-  font-weight: bold;
-  font-size: .875em;
-  padding-right: 1ex;
-  padding-left: 0;
-}
-
-input[name=presctype][value\$=private]:checked  ~ fieldset,
-  input[name=presctype][value\$=private] + label,
-  .prescription.private { background-color: #CFC;}
-input[name=presctype][value\$=selfpaid]:checked  ~ fieldset,
-  input[name=presctype][value\$=selfpaid]         + label,
-  .prescription.selfpaid { background-color: #FFC;}
-input[name=presctype][value=doctor_compulsory]:checked  ~ fieldset,
-  input[name=presctype][value=doctor_compulsory]  + label,
-  .prescription.doctor.compulsory { background-color: #CFF;}
-input[name=presctype][value=dentist_compulsory]:checked  ~ fieldset,
-  input[name=presctype][value=dentist_compulsory] + label,
-  .prescription.dentist.compulsory { background-color: #FCC;}
-input[name=presctype][value^=altpractition]:checked  ~ fieldset,
-  input[name=presctype][value^=altpractition]     + label,
-  .prescription.altpractition { background-color: #FCF;}
-
-.prescription .baseinfo { width: 60%;}
-
-  .baseinfo label[for=insurance],
-  .baseinfo #insurance { width: 100%; }
-  .baseinfo label[for=name],
-  .baseinfo #name { width: 65%; margin-right: -.875ex;}
-  .baseinfo #name { height: 4em; }
-  .baseinfo label[for=bday],
-  .baseinfo #bday { width: 35%;}
-  .baseinfo #bday { height: 4em; text-align: center; vertical-align: top;}
-  .baseinfo label[for=date],
-  .baseinfo #date { width: 34%; margin-left: 65%;}
-  .baseinfo #date { text-align: right;}
-
-.prescription .misc { width: 40%; }
-
-  .misc h1 {
-    font-size: 1.25em;
-    font-weight: bold;
-    width: 100%;
-  }
-  .misc label[for=addcontrib],
-  .misc label[for=contribconfirm] {width: 100%;}
-  .misc #addcontrib,
-  .misc #contribconfirm {width: 100%; text-align: right;}
-
-.prescription label[for=prescreviewed] {
-  margin-left: 1ex;
-  font-weight: bold;
-  text-decoration: underline;
-  background-color: #FCC;
-}
-.prescription label[for=prescreviewed].checked,
-.prescription :checked + label[for=prescreviewed] {
-  font-weight: normal;
-  text-decoration: none;
-  background-color: transparent;
-}
-
-.prescription .catalogue { width: 100%; }
-
-  .catalogue h2:nth-of-type(1) {
-    font-weight: bold;
-    width: 100%;
-    margin-bottom: .25em;
-  }
-  .catalogue label {
-    display: inline-block;
-    width: 33%;
-    margin-right: -.625ex;
-    margin-top: .25em;
-    vertical-align: top;
-  }
-  .catalogue label[for=presccontinual] { margin-right: 33%;}
-
-.prescription .description { width: 100%; position: relative;}
-  .description * { margin-right: -.625ex; vertical-align: top; }
-  .description label {vertical-align: bottom;}
-
-  .description label[for=quantity] { width: 20%;}
-  .description label[for=remidy] { width: 60%; }
-  .description label[for=quantity_weekly] { width: 20%;}
-  .description #quantity,
-  .description .quantity { width: 20%;  height: 3em; text-align: center;}
-  .description #remidy,
-  .description .remidy { width: 60%; height: 3em;}
-  .description #quantity_weekly,
-  .description .quantity_weekly { width: 20%; height: 3em; text-align: center;}
-
-  .description .indicator_codes {display: inline-block; width: 20%; padding: 0; padding-top: 1.5ex;}
-  .description label[for=indicator],
-  .description label[for=icd10] { display: block; width: 100%;}
-  .description #icd10,
-  .description #indicator {width: 100%; text-align: right;}
-
-  .description .indicator_reading { display: inline-block; width: 78%; padding: 0; padding-top: 1.5ex;  margin-left: 2%;}
-  .description label[for=indicator_reading],
-  .description #indicator_reading { width: 100%; display: block;}
-  .description #indicator_reading { height: 4em;}
-
-.prescription .therapy_dates span { min-width: 8em; margin: 0 .5ex;}
-
-.prescription .issuer { display: inline-block; width: 50%; padding: 0; padding-top: 0; margin-left: 50%;}
-.prescription .issuer label:first-of-type {
-   display: block;
-   position: relative;
-   width: 50%; left: -50%; top: 2.25em;
-   font-size: 1em;
-   text-align: right;
-   padding-right: 1ex;
- }
-.prescription .issuer input[type=radio] + label:before { content: none; }
-.prescription .issuer input[type=radio] { display: none; }
-.prescription .issuer input[type=radio] + label {
-  display: inline-block;
-  width: 50%;
-  padding: .25ex 0; margin: 0;
-  text-align: center;
-  border: 1px solid black;
-}
-.prescription .issuer input[type=radio]:checked + label {
-  font-weight: bold;
-  background-color: #FFF;
-  border-width: 1px;
-  border-bottom: 1px solid #FFF;
-}
-.prescription .issuer input[type=radio] + label + input + label + select,
-.prescription .issuer input[type=radio] + label + select + input { display: none; }
-.prescription .issuer input[type=radio]:checked + label + input + label + select,
-.prescription .issuer input[type=radio]:checked + label + select + input {
-  display: block; width: 100%;
-  border: 1px solid black;
-  background-color: #FFF;
-  border-width: 0 1px 1px 1px;
-  padding: .25ex .5ex;
-  margin-top: -1px;
-}
-.prescription .issuer input[type=radio]:checked + label + input + label + select option { display: block;}
-.prescription span#issuer { width: 100%; height: 3em; padding: 1ex 2ex;}
-
-.prescription .controls { width: 100%; }
-  .controls a.button,
-  .controls button[value=save],
-  .controls button[value=cancel],
-  .controls button[value=delete] { width: 25%;}
-
diff --git a/prescriptions/prescriptions.html.sh b/prescriptions/prescriptions.html.sh
deleted file mode 100755 (executable)
index c4ef19a..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-# Copyright 2016 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/>. 
-
-client="${_GET[client]}"
-edit="${_GET[edit]}"
-[ -n "$edit" ] && client="${edit%.*.mpx}.vcf"
-
-cat <<EOF
-
-<div id="${card}" class="card">$(view_card "$client")</div>
-
-<!--h1>$(l10n prescriptions_current)</h1-->
-
-<div class="newprescription">
-  <form action="?action=new_prescription" method="POST">
-    <input type="hidden" name="client" value="$client">
-    <button type="submit">$(l10n newprescription)</button>
-  </form>
-</div>
-EOF
-
-list_prescriptions "$client" |grep -q "$edit" || edit_prescription "$edit"
-
-list_prescriptions "$client" \
-|while read pre; do 
-  [ "$pre" = "$edit" ] \
-  && edit_prescription "$pre" \
-  || view_prescription "$pre"
-done
-
-#<!--h1>$(l10n prescriptions_past)</h1-->
-
-# vi:set filetype=html:
diff --git a/prescriptions/prescriptions.sh b/prescriptions/prescriptions.sh
deleted file mode 100755 (executable)
index fcef09a..0000000
+++ /dev/null
@@ -1,73 +0,0 @@
-#!/bin/zsh
-
-# Copyright 2016 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/>. 
-
-source "$_EXEC/pages/cards.sh"
-declare -A mpx
-
-BR='
-'
-
-view_card="$_EXEC/templates/view_client.sh"
-
-list_prescriptions(){
-  client="$1"
-  find "$_DATA/prescriptions/" -name "${client%.vcf}.*.mpx" \
-  | while read pfile; do
-    printf '%s\t%s\n' "$(grep '^date' "$pfile")" "${pfile##*/}"
-  done \
-  | sort -r | cut -f2
-}
-
-list_prescription_issuers(){
-  sed -rn 's;^issuer:(.+)$;\1;p' ${_DATA}/prescriptions/*.mpx \
-  | sort -u
-}
-
-edit_prescription(){
-  id="$1"
-  prescfile="$_DATA/prescriptions/$id"
-  tempfile="$_DATA/temp/$id"
-  [ -f "$tempfile" ] || cp "$prescfile" "$tempfile"
-
-  mpx=()
-  cat "$tempfile" |while read -r line; do
-    val="${line#*:}"
-    mpx[${line%%:*}]="${val//\\n/$BR}"
-  done
-
-  . "$_EXEC/templates/edit_prescription.sh"
-}
-
-view_prescription(){
-  id="$1"
-  prescfile="$_DATA/prescriptions/$id"
-
-  mpx=()
-  cat "$prescfile" |while read -r line; do
-    val="${line#*:}"
-    mpx[${line%%:*}]="$(htmlsafe "${val//\\n/$BR}")"
-  done
-
-  . "$_EXEC/templates/view_prescription.sh"
-}
-
-therapy_dates(){
-  tpyfile="$_DATA/therapies/${1%.mpx}.tpy"
-  sed -rn 's;^session[0-9]+_date:(.+)$;\1;p' "$tpyfile"
-}
diff --git a/prescriptions/text_prescriptions.sh b/prescriptions/text_prescriptions.sh
deleted file mode 100755 (executable)
index 8934bc7..0000000
+++ /dev/null
@@ -1,66 +0,0 @@
-# Copyright 2016 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/>. 
-
-. $_EXEC/templates/text_cards.sh
-
-item_name[therapy_prescription]="Heil&shy;mit&shy;tel&shy;ver&shy;ord&shy;nung"
-item_name[prescriptions_current]="Aktuelle Verordnungen"
-item_name[prescriptions_past]="Frühere Verordnungen"
-item_name[newprescription]="Neue Verordnung"
-item_name[date]="Datum"
-item_name[name]="Name d. Versicherten"
-item_name[bday]="geb. am"
-item_name[addcontrib]="Zuzahlung"
-item_name[contribconfirm]="Zuzahlung erfolgt am..."
-item_name[contribreceipt]="Quit&shy;tung heraus&shy;ge&shy;ge&shy;ben"
-item_name[prescreviewed]="Verordnung geprüft"
-item_name[prescreview]="Verordnung prüfen!"
-item_name[quantity]="Ver&shy;ord&shy;nungs&shy;men&shy;ge"
-item_name[remidy]="Heil&shy;mit&shy;tel nach Maß&shy;ga&shy;be des Ka&shy;ta&shy;lo&shy;ges"
-item_name[prescfirst]="Erst&shy;ver&shy;ord&shy;nung"
-item_name[prescfollow1]="1. Folge-&shy;VO"
-item_name[prescfollow2]="2. Folge-&shy;VO"
-item_name[prescother]="VO außer&shy;halb des Re&shy;gel&shy;falls"
-item_name[presccontinual]="Lang&shy;frist&shy;ver&shy;ord&shy;nung"
-item_name[grouptherapy]="Grup&shy;pen&shy;the&shy;ra&shy;pie"
-item_name[housecall]="Haus&shy;be&shy;such"
-item_name[report]="The&shy;ra&shy;pie&shy;be&shy;richt"
-item_name[indicator]="In&shy;di&shy;ka&shy;tions&shy;schlüssel"
-item_name[icd10]="ICD-10-Code"
-item_name[indicator_reading]="Befund Beschreibung"
-item_name[insurance]="Krankenkasse bzw. Kostenträger"
-item_name[prescription_by_catalogue]="Verordnung nach Maßgabe des Kataloges (Regelfall)"
-item_name[therapy_start]="Be&shy;hand&shy;lungs&shy;be&shy;ginn spä&shy;test. am"
-item_name[quantity_weekly]="An&shy;zahl pro Wo&shy;che"
-item_name[save]="Speichern"
-item_name[cancel]="Abbrechen"
-item_name[delete]="Löschen"
-item_name[therapy]="Zur Therapie"
-
-item_name[doctor]="Arzt"
-item_name[dentist]="Zahn&shy;arzt"
-item_name[altpractition]="Heil&shy;prak&shy;tiker"
-item_name[noprescription]="Ohne Ver&shy;ord&shy;nung"
-item_name[selfpaid]="Selbst&shy;zah&shy;lend"
-item_name[private]="Pri&shy;vat"
-item_name[compulsory]="Ge&shy;setz&shy;lich"
-
-item_name[therapy_dates]="Be&shy;hand&shy;lungs&shy;ter&shy;mi&shy;ne"
-
-item_name[issuer]="Ausgestellt durch"
-item_name[issuer_from_list]="Aus Liste"
-item_name[issuer_other]="Andere"
diff --git a/prescriptions/update_prescription.sh b/prescriptions/update_prescription.sh
deleted file mode 100755 (executable)
index aeb4993..0000000
+++ /dev/null
@@ -1,55 +0,0 @@
-#!/bin/zsh
-
-# Copyright 2016 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/>. 
-
-BR='
-'
-prescription="${_POST[prescription]}"
-
-tempfile="$_DATA/temp/$prescription"
-prescfile="$_DATA/prescriptions/$prescription"
-client="${prescription%.*.mpx}.vcf"
-clientfile="$_DATA/vcard/$client"
-
-if [ -z "$prescription" -o \! -f "$clientfile" ]; then
-  redirect "?p=error"
-  exit 0
-fi
-
-[ "$_POST[issuer_select]" = "other" ] && _POST[issuer]="${_POST[issuer_other]}"
-
-# serialize POST array into file
-for key in ${(k)_POST}; do
-  printf %s:%s\\n "$key" "${_POST[$key]//$BR/\\n}"
-done >"$tempfile"
-
-case "${_POST[action]}" in
-  save)
-    mv "$tempfile" "$prescfile"
-    touch "$clientfile"
-    ;;
-  cancel)
-    rm "$tempfile"
-    ;;
-  delete)
-    rm "$tempfile" "$prescfile"
-    touch "$clientfile"
-    ;;
-esac
-
-redirect "?p=prescriptions&client=${client}#${prescription}"
diff --git a/prescriptions/view_prescription.sh b/prescriptions/view_prescription.sh
deleted file mode 100755 (executable)
index ced7241..0000000
+++ /dev/null
@@ -1,121 +0,0 @@
-# Copyright 2016 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/>. 
-
-check(){ [ "$1" = "$2" ] && printf checked}
-
-cat <<END_HTML
-<div class="prescription ${mpx[presctype]%_*} ${mpx[presctype]#*_}">
-<fieldset class="baseinfo">
-<label for="insurance">$(l10n insurance)</label>
-<span id="insurance">${mpx[insurance]}</span>
-<br>
-<label for="name">$(l10n name)</label>
-<label for="bday">$(l10n bday)</label>
-<span id="name">${mpx[name]}</span>
-<span id="bday">${mpx[bday]}</span>
-
-<br>
-<label for="date">$(l10n date)</label>
-<span id="date">${mpx[date]}</span>
-</fieldset>
-
-<fieldset class="misc">
-<h1 id="${mpx[prescription]}">$(l10n therapy_prescription)</h1>
-<br>
-<label for="addcontrib">$(l10n addcontrib)</label>
-<span id="addcontrib">${mpx[addcontrib]}</span>
-<label for="contribconfirm">$(l10n contribconfirm)</label>
-<span id="contribconfirm">${mpx[contribconfirm]}</span>
-<label class="checkbox ${mpx[contribreceipt]:+checked}" for="contribreceipt">$(l10n contribreceipt)</label>
-</fieldset>
-
-<label class="checkbox ${mpx[prescreviewed]:+checked}" for="prescreviewed">
-  $([ -n "${mpx[prescreviewed]}" ] && printf %s "$(l10n prescreviewed)" \
-                                   || printf %s "$(l10n prescreview)" )
-</label>
-
-<fieldset class="catalogue">
-<h2>$(l10n prescription_by_catalogue)</h2>
-<label class="radio $(check "$mpx[prescno]" first)" for="prescfirst">$(l10n prescfirst)</label>
-<br>
-<label class="radio $(check "$mpx[prescno]" follow1)" for="prescfollow1">$(l10n prescfollow1)</label>
-<br>
-<label class="radio $(check "$mpx[prescno]" follow2)" for="prescfollow2">$(l10n prescfollow2)</label>
-<br>
-<label class="radio $(check "$mpx[prescno]" other)" for="prescother">$(l10n prescother)</label>
-<br>
-<label class="radio $(check "$mpx[prescno]" continual)" for="presccontinual">$(l10n presccontinual)</label>
-
-<br>
-<label class="checkbox ${mpx[grouptherapy]:+checked}" for="grouptherapy">$(l10n grouptherapy)</label>
-<br>
-<label class="checkbox ${mpx[housecall]:+checked}" for="housecall">$(l10n housecall)</label>
-<br>
-<label class="checkbox ${mpx[report]:+checked}" for="report">$(l10n report)</label>
-</fieldset>
-
-<fieldset class="description">
-  <label for="quantity">$(l10n quantity)</label>
-  <label for="remidy">$(l10n remidy)</label>
-  <label for="quantity_weekly">$(l10n quantity_weekly)</label>
-  <span id="quantity">${mpx[quantity]}</span>
-  <span id="remidy">${mpx[remidy]}</span>
-  <span id="quantity_weekly">${mpx[quantity_weekly]}</span>
-$( for n in {0..10}; do
-  [ -n "${mpx[quantity$n]}" -o -n "${mpx[remidy$n]}" -o -n "${mpx[quantity_weekly$n]}" ] \
-  && printf '
-    <span id="quantity">%s</span>
-    <span id="remidy">%s</span>
-    <span id="quantity_weekly">%s</span>
-    ' "${mpx[quantity$n]}" "${mpx[remidy$n]}" "${mpx[quantity_weekly$n]}"
-done )
-<br>
-<p class="indicator_codes">
-  <label for="indicator">$(l10n indicator)</label>
-  <span id="indicator">${mpx[indicator]}</span>
-  <br>
-  <label for="icd10">$(l10n icd10)</label>
-  <span id="icd10">${mpx[icd10]}</span>
-</p>
-<br>
-<p class="indicator_reading">
-  <label for="indicator_reading">$(l10n indicator_reading)</label>
-  <span id="indicator_reading">${mpx[indicator_reading]}</span>
-</p>
-</fieldset>
-
-<p class="therapy_dates">
-  <label>$(l10n therapy_dates):</label>
-  $(therapy_dates "$id" \
-    | while read date; do
-      printf '<span>%s</span>' "$date"
-    done
-  )
-</p>
-
-<p class="issuer">
-  <label>$(l10n issuer)</label>
-  <span id="issuer">$mpx[issuer]</span>
-</p>
-
-<fieldset class="controls">
-<a class="button" href="?p=prescriptions&amp;edit=${mpx[prescription]}#${mpx[prescription]}">$(l10n edit)</a>
-<a class="button" href="?p=therapy&amp;id=${mpx[prescription]%.mpx}.tpy">$(l10n therapy)</a>
-</fieldset>
-
-</div>
-END_HTML
diff --git a/therapy/text_therapy.sh b/therapy/text_therapy.sh
deleted file mode 100755 (executable)
index a2735b2..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-# Copyright 2016 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/>. 
-
-. $_EXEC/templates/text_prescriptions.sh
-
-item_name[prescriptionlist]="Zur Verordnungsliste"
-item_name[delete_session]="Therapiesitzung entfernen"
-item_name[therapist]="Therapeut"
-item_name[number]="Nr."
-item_name[signature]="Un&shy;ter&shy;schrift"
-item_name[weekly]="p. Woche"
-item_name[notes]="Notizen"
-item_name[trailsave]="Speichern für weitere Felder"
diff --git a/therapy/therapy.css b/therapy/therapy.css
deleted file mode 100644 (file)
index b17497c..0000000
+++ /dev/null
@@ -1,360 +0,0 @@
-.trailbtn:checked + fieldset.trailbox { display: block;}
-
-.trailbtn:checked + .trailbox + .trailbtn {
-  display: block;
-  height: 2.25em; padding: 0 3ex;
-  font-size: 1em; font-weight: normal;
-  color: #000; background-color: #FDD;
-  border: 1px solid #000;
-  border-radius: 4px;
-}
-.trailbtn:checked + .trailbox + .trailbtn[type=submit]:before {content: none;}
-
-
-* { box-sizing: border-box; }
-body {
-  overflow: scroll;
-  position: relative;
-  width: 100%;
-  margin: 0; padding: 0;
-  padding-top: 2em;
-}
-
-form > button[type=submit] {
-  position: fixed; display: block;
-  top: 0; right: 2.5em;
-  height: 2.25em; padding: 0 3ex;
-  font-size: 1em; font-weight: bold;
-  color: #000; background-color: #FDD;
-  border-width: 1px; border-color: #000;
-  border-style: none solid solid solid;
-  border-radius: 0 0 4px 4px;
-  z-index: 3;
-}
-form > button[type=submit]:hover {
-  background-color: #FEE;
-}
-
-input.tab { display: none; }
-input.tab + label.tab { display: block; }
-input.tab + label.tab::before { content: '\25b8 \00a0'; float: left;}
-input.tab:checked + label.tab::before { content: '\25be \00a0'; }
-input.tab + label.tab + div.tab { display: none; }
-input.tab:checked + label.tab + div.tab { display: block; }
-
-input.color { display: none }
-input.color + label{
-  display: inline-block;
-  width: 1em; height: 1em;
-  border: 1px solid black;
-}
-input.color:checked + label{ border-width: 3px;}
-input.color[value="#000"] + label,
-input.color[value="#888"] + label { background-color: #888;}
-input.color[value="#00A"] + label { background-color: #00F;}
-input.color[value="#0A0"] + label { background-color: #0F0;}
-input.color[value="#0AA"] + label { background-color: #0FF;}
-input.color[value="#A00"] + label { background-color: #F00;}
-input.color[value="#A0A"] + label { background-color: #F0F;}
-input.color[value="#AA0"] + label { background-color: #FF0;}
-input.color[value="#FFF"] + label { background-color: #FFF;}
-
-h1, label.tab, div.tab, fieldset.tab,
-div.patient, div.prescription {
-  display: block;
-  width: 96%;
-  margin: 0 2%;
-}
-
-div.prescription span {
-  display: inline-block;
-  width: 50%;
-  margin-right: -.75ex;
-  vertical-align: top;
-}
-div.prescription span label { font-weight: bold; margin-right: 1ex;}
-div.prescription span.prescno,
-div.prescription span.catalogue {
-  width: 33%;
-  font-weight: bold;
-  margin-bottom: .5em;
-  padding: .5ex 1ex;
-}
-
-div.prescription ul {margin-top: 0;}
-
-div.prescription label.checkbox,
-div.prescription label.radio {
-  display: block;
-  padding-left: 1.25em;
-  font-size: 1em;
-  margin: .5em 0;
-}
-
-div.prescription label.checkbox:before,
-div.prescription label.radio:before {
-  display: inline-block;
-  color: #000;
-  background-color: #FFF;
-  height: 1.375em; width: 1.125em;
-  padding: .125em 0 0 .375em;
-  margin: 0 .5em .25em -1.25em;
-  border: 1px solid #000;
-  vertical-align: middle;
-  content: ' ';
-}
-div.prescription label.radio:before { border-radius: .5em;}
-div.prescription label.checkbox.checked:before,
-div.prescription label.radio.checked:before { content: "\2713";}
-
-div.prescription label[for=prescreviewed] {
-  margin-left: 1ex;
-  font-weight: bold;
-  text-decoration: underline;
-  background-color: #FCC;
-}
-div.prescription label[for=prescreviewed].checked {
-  font-weight: normal;
-  text-decoration: none;
-  background-color: transparent;
-}
-
-div.prescription label.tab {width: 96%; border: none; border-bottom: 1px dotted;}
-div.prescription div.tab { width: 96%; background-color: #DDD;}
-
-input.stickynote { display:none; }
-input.stickynote + .stickynote {
-  position: fixed;
-  background-color: #FF8;
-  top: 4em; bottom: 4em;
-  left: -4.5em; width: 5em;
-  padding: 1ex;
-  max-height: 90%;
-  z-index: 2;
-}
-input.stickynote + .stickynote:nth-of-type(2n) {
-  background-color: #8FF;
-  top: 8em;
-}
-
-input.stickynote + .stickynote > * { display: none; }
-input.stickynote + .stickynote > label {
-  position: absolute;
-  top: 0; bottom: 0; right: .5ex;
-  display: block;
-  text-align: right;
-  font-weight: bold;
-}
-input.stickynote + .stickynote:hover {
-  left: -1ex;
-}
-input.stickynote:checked + .stickynote {
-  width: auto; left: 1em; right: 1em;
-}
-input.stickynote:checked + .stickynote > * { display: block; }
-input.stickynote:checked + .stickynote > textarea {
-  display: block;
-  position: absolute;
-  left; 0; right: 0; bottom: 0; top: 0;
-  width: 100%; height: 100%;
-  background-color: #FF8;
-  padding: 2em 1em;
-}
-input.stickynote:checked + .stickynote > button[type="submit"] {
-  display: block;
-  position: absolute;
-  right: .5ex; bottom: .5ex;
-  z-index: 2;
-}
-input.stickynote:checked + .stickynote > label {
-  display: block;
-  position: static;
-  font-size: 0;
-}
-input.stickynote:checked + .stickynote > label:before {
-  position: absolute;
-  font-size: initial;
-  content: "x";
-  top: .5ex; right: .5ex;
-  padding: .125ex .75ex;
-  background-color: #000;
-  color: #FFF;
-  border-radius: 1ex;
-  z-index: 2;
-}
-
-fieldset.penwidth,
-fieldset.color {
-  position: absolute;
-  right: 0; width: 2em;
-  margin: .5em .5em .125em 2%;
-  border: none;
-  padding: 0;
-}
-fieldset.penwidth { bottom: 19em; }
-fieldset.penwidth > input {display: none;}
-fieldset.penwidth > input + label { display: none;}
-fieldset.penwidth > input:checked + label {
-  display: block;
-  width: 2em; height: 2em;
-  background-color: #000;
-  border: 1em solid #FFF;
-  border-radius: 1em;
-}
-fieldset.penwidth > input[value="4"]  + label { border-width: .75em; }
-fieldset.penwidth > input[value="12"] + label { border-width:  .5em; }
-fieldset.penwidth > input[value="36"] + label { border-width: .25em; }
-
-fieldset.color { bottom: 0; }
-fieldset.color > input.color + label {
-  width: 2em; height: 2em;
-}
-.dotmark {
-  max-width: 90%;
-  margin: .5em 1em .125em 2%; padding: 0;
-  text-align: left;
-  border: 1px solid black;
-}
-.dotmark.ov {
-  position: absolute;
-  left: 0; bottom: .25em;
-  z-index: 1;
-}
-
-@media(min-width: 800px){
-  h1, label.tab, div.tab, fieldset.tab,
-  div.patient, div.prescription {
-    width: 38%;
-    margin-right: 0;
-  }
-  input.stickynote:checked + .stickynote { right: 50%; }
-  fieldset.penwidth,
-  fieldset.color { position: fixed; }
-  .dotmark {
-    position: fixed;
-    max-width: 52%;
-    max-height: 98%;
-    right: 2em; bottom: .25em;
-  }
-  .dotmark.ov {
-    position: fixed;
-    right: 2em; left: auto;
-  }
-}
-
-h1 {display: none;}
-
-div.patient, div.prescription { margin-top: 1em; }
-div.prescription {
-  border: 1px solid black;
-  background-color: #EEE;
-  padding: .125em 1.25ex .5em 1.25ex;
-}
-div > h2 { margin: 0; border-bottom: 1px solid black; }
-div:nth-child(n+2) > a:first-of-type {
-  display: block;
-  margin: .125em 0 .5em 0;
-  text-decoration: none;
-}
-
-#report fieldset.tab,
-#report label.tab {
-  font-size: 1.25em;
-  font-weight: bold;
-  padding: .125em 1ex .25em 1ex;
-  color: #FFF;
-  background-color: #333;
-  margin-top: .125em;
-  text-align: right;
-  border: none;
-}
-#report label.heading {
-  background-color: #FFF;
-  margin-top: 1em;
-  border: 2px solid black;
-  border-bottom-width: 1px;
-  color: black;
-}
-#report label.heading > span {
-  text-decoration: underline;
-}
-
-#report fieldset.tab > *,
-#report label > input,
-#report label > span {
-  display: inline-block;
-  text-align: right;
-}
-#report .tab > .no {
-  width:  10%; float: left;
-  border: solid 1px #FFF;
-  background-color: #555;
-  border-radius: 2ex;
-  padding: 0;
-  text-align: center;
-}
-#report label.heading > span.no {
-  background-color: inherit;
-  border: none;
-}
-#report .tab > .date      { width: 30%; }
-#report .tab > .therapist { width: 30%; }
-#report .tab > .signature { width: 20%; }
-#report label.tab > .signature { font-size: .75em; }
-
-#report .signature > input[type=checkbox] {
-  display: inline;
-  font-weight: bold;
-  font-size: 1.25em;
-}
-#report .signature > input[type=checkbox]:before {
-  display: block; width: 1.25em;
-  margin: -.125em 0 0 -.5ex;
-  background-color: #FFF;
-  text-align: center;
-  content: "\00a0 \00a0 \00a0";
-}
-#report .signature > input[type=checkbox]:checked::before {
-  content: "\2713";
-}
-
-#report input.tab + label.tab > input.date,
-#report input.tab + label.tab > input.therapist {
-  display: none;
-}
-#report input.tab:checked + label.tab > input.date,
-#report input.tab:checked + label.tab > input.therapist {
-  display: inline;
-}
-#report input.tab:checked + label.tab > span.date,
-#report input.tab:checked + label.tab > span.therapist {
-  display: none;
-}
-
-#report div.tab {
-  border: 2px solid #333;
-  border-top-width: 1px;
-  margin-top: -1px;
-  padding: .25em .5ex 1em .5ex;
-}
-#report div.tab > fieldset.note {
-  border: none;
-  margin: 0; padding: 0;
-}
-#report div.tab > fieldset.note > textarea {
-  display: block;
-  width: 93%; height: 8em;
-  margin: -8em 0 .5em 2em;
-  font: normal 1em sans-serif;
-}
-div.tab > fieldset.note > input.color + label { margin: 0; display: block; }
-div.tab > fieldset.note > input.color[value="#888"]:checked ~ textarea { background-color: #AAA; }
-div.tab > fieldset.note > input.color[value="#00A"]:checked ~ textarea { background-color: #88F; }
-div.tab > fieldset.note > input.color[value="#0A0"]:checked ~ textarea { background-color: #8F8; }
-div.tab > fieldset.note > input.color[value="#0AA"]:checked ~ textarea { background-color: #8FF; }
-div.tab > fieldset.note > input.color[value="#A00"]:checked ~ textarea { background-color: #F88; }
-div.tab > fieldset.note > input.color[value="#A0A"]:checked ~ textarea { background-color: #F8F; }
-div.tab > fieldset.note > input.color[value="#AA0"]:checked ~ textarea { background-color: #FF8; }
-div.tab > fieldset.note > input.color[value="#FFF"]:checked ~ textarea { background-color: #FFF; }
-
-div.tab > button.delete {float: right; display: inline-block; margin-top: -1em; display: none;}
diff --git a/therapy/therapy.html.sh b/therapy/therapy.html.sh
deleted file mode 100755 (executable)
index 1821c24..0000000
+++ /dev/null
@@ -1,227 +0,0 @@
-# Copyright 2016, 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/>. 
-
-t_session_note(){
-  session_n="$1"
-  note_n="$2"
-  
-  color=session${session_n}_note${note_n}_color
-  unset c0 c1 c2 c3 c4 c5 c6 c7
-  
-  if [ "$note_n" -eq 1 -o -n "${tpy[session${session_n}_note${note_n}]}" ]; then
-    printf '<input class="trailbtn" type="checkbox" checked="checked">'
-  else
-    printf '<input class="trailbtn" type="checkbox">'
-  fi
-
-  _checked="$(validate "$tpy[$color]" '#(888|00A|0A0|0AA|A00|A0A|AA0)' '#FFF')"
-       cat <<-EOF
-         <fieldset class="note trailbox">
-           <input class=color type=radio name="$color" value="#888" id=${color}_000 $(checked \#888)><label for=${color}_000></label>
-           <input class=color type=radio name="$color" value="#00A" id=${color}_001 $(checked \#00A)><label for=${color}_001></label>
-           <input class=color type=radio name="$color" value="#0A0" id=${color}_010 $(checked \#0A0)><label for=${color}_010></label>
-           <input class=color type=radio name="$color" value="#0AA" id=${color}_011 $(checked \#0AA)><label for=${color}_011></label>
-           <input class=color type=radio name="$color" value="#A00" id=${color}_100 $(checked \#A00)><label for=${color}_100></label>
-           <input class=color type=radio name="$color" value="#A0A" id=${color}_101 $(checked \#A0A)><label for=${color}_101></label>
-           <input class=color type=radio name="$color" value="#AA0" id=${color}_110 $(checked \#AA0)><label for=${color}_110></label>
-           <input class=color type=radio name="$color" value="#FFF" id=${color}_111 $(checked \#FFF)><label for=${color}_111></label>
-           <textarea name="session${session_n}_note${note_n}">${tpy[session${session_n}_note${note_n}]}</textarea>
-         </fieldset>
-       EOF
-}
-
-t_session(){
-  session_n="$1"
-
-  sid=session${session_n}
-
-  if [ "$tpy[${sid}_sigset]" = pos ]; then
-    sigcheck=checked
-  else
-    unset sigcheck
-  fi
-
-       cat <<-EOF
-         <input type=hidden name=$sid value=exists>
-         <input class="tab" type="checkbox" id=${sid}_open name="${sid}_open" value="checked" ${tpy[${sid}_open]}>
-         <label class="tab" for="${sid}_open">
-           <span class=no>${session_n}.</span><!--
-        --><span class=date>${tpy[${sid}_date]}</span><!--
-        --><input class="date" name="${sid}_date" value="${tpy[${sid}_date]}" placeholder="$(l10n date)"><!--
-        --><span class=therapist>${tpy[${sid}_therapist]}</span><!--
-        --><input class="therapist" name="${sid}_therapist" value="${tpy[${sid}_therapist]}" placeholder="$(l10n therapist)"><!--
-        --><span class=signature><input type="checkbox" name="${sid}_sigset" value="pos" $sigcheck></span>
-         </label>
-         <div class=tab>
-           <img class="dotmark ov" src="/therapies/${id%.tpy}_${sid}.png" alt="">
-           $(n=1;
-              while [ -n "${tpy[session${session_n}_note${n}]+x}" ]; do
-                if [ -n "${tpy[session${session_n}_note${n}]}" ]; then
-                  x=$n
-                fi
-                n=$(($n + 1))
-              done
-              for n in $(seq 1 $((${x:-0} + 3)) ); do t_session_note $session_n $n; done
-             )
-           <button class="trailbtn" type="submit">$(l10n trailsave)</button>
-           <button class=delete type=submit name=delete_session value=${session_n}>$(l10n delete_session)</button>
-         </div>
-       EOF
-}
-
-therapy_sessions(){
-  n=1; while [ -n "${tpy[session${n}]}" ]; do
-    t_session $n
-    n=$(($n+1))
-  done
-
-  sid=session$n
-
-       cat <<-EOF
-         <fieldset class="tab">
-           <button class=no type=submit name=new_session value=$sid>+</button><!--
-        --><input class=date name=${sid}_date value="" placeholder="$(l10n date)" /><!--
-        --><input class=therapist name=${sid}_therapist value="" placeholder="$(l10n therapist)" /><!--
-        --><span class=signature><span></span>
-           <input type=hidden name="${sid}_note1" value="">
-         </fieldset>
-       EOF
-}
-
-cat <<EOF
-<h1>$(l10n therapy)</h1>
-
-<div class="patient">
-  <h2>$client_name</h2>
-  <a href="?p=prescriptions&amp;client=${id%%.*}.vcf">&lt; $(l10n prescriptionlist)</a>
-</div>
-
-<div class="prescription">
-  <h2>$(l10n therapy_prescription)</h2>
-  <span class="insurance">${mpx[insurance]}</span>
-  <span class="date"><label>$(l10n date):</label>${mpx[date]}</span>
-
-  <label class="checkbox ${mpx[prescreviewed]:+checked}" for="prescreviewed">
-    $([ -n "${mpx[prescreviewed]}" ] && printf %s "$(l10n prescreviewed)" \
-                                     || printf %s "$(l10n prescreview)" )
-  </label>
-
-       ${mpx[prescno]:+<span class="prescno">$(l10n presc${mpx[prescno]})</span>}
-  ${mpx[grouptherapy]:+<span class="catalogue">$(l10n grouptherapy)</span>}
-     ${mpx[housecall]:+<span class="catalogue">$(l10n housecall)</span>}
-        ${mpx[report]:+<span class="catalogue">$(l10n report)</span>}
-
-  <ul>$(for n in '' {0..10}; do
-    [ -n "${mpx[remidy$n]}" ] && \
-    printf '<li>%s %s %s</li>' "${mpx[quantity$n]}" \
-                               "${mpx[remidy$n]}" \
-                               "${mpx[quantity_weekly$n]:+($mpx[quantity_weekly$n] $(l10n weekly))}"
-  done)</ul>
-
-  ${mpx[indicator]:+<span class="indicator"><label>$(l10n indicator):</label>${mpx[indicator]}</span>}
-      ${mpx[icd10]:+<span class="icd10">    <label>$(l10n icd10):</label>${mpx[icd10]}</span>}
-
-  ${mpx[addcontrib]:+
-  <label class='checkbox ${mpx[contribconfirm]:+checked}' for="addcontrib">
-    $([ -n "${mpx[contribconfirm]}" ] && printf %s "$(l10n contribconfirm)" ${mpx[contribconfirm]} \
-                                      || printf %s "$(l10n addcontrib)" )
-  </label>
-  }
-
-  <input class="tab" type="checkbox" id="indicator_reading">
-  <label class="tab" for="indicator_reading">$(l10n indicator_reading)</label>
-  <div class="tab">${mpx[indicator_reading]}</div>
-</div>
-
-<form id="report" method="POST" action="?action=update_therapy">
-  <input type="hidden" name="id" value="${id}">
-
-  <input class="stickynote" type="checkbox" name="c_stickynote" id="show_stickynote">
-  <fieldset class="stickynote">
-    <label for="show_stickynote">$(l10n notes)</label>
-    <h2>$(l10n notes)</h2>
-    <textarea name="stickynote">${tpy[stickynote]}</textarea>
-    <button type="submit">$(l10n save)</button>
-  </fieldset>
-
-  <input class="stickynote" type="checkbox" name="c_timesheet" id="show_timesheet">
-  <fieldset class="stickynote">
-    <label for="show_timesheet">$(l10n timesheet)</label>
-    <h2>$(l10n timesheet)</h2>
-    <table><thead>
-      <tr><th>$(l10n time_goal)</th><th>$(l10n time_actual)</th><th>$(l10n time_difference)</th></tr>
-    </thead><tbody>
-      $(for n in '' {0..10}; do
-        printf '<tr><td><input type="number" name="tsgoal" value="%s"/></td>
-                    <td><input type="number" name="tsactual" value="%s"/></td>
-                    <td>%s</td>
-                </tr>\n' \
-                "$mpx[tsgoal${n}]" "$mpx[tsactual${n}]" "$((${mpx[tsgoal${n}]:-0} - ${mpx[tsactual${n}]:-0}))"
-      done)
-    </tbody></table>
-    <button type="submit">$(l10n save)</button>
-  </fieldset>
-
-  <!--input class="tab" type="checkbox" id="lookout">
-  <label class="tab" for="lookout">$(l10n indicator_reading)</label>
-  <div class="tab"><textarea name="lookout">${mpx[lookout]}</textarea -->
-
-  <label class="tab heading">
-    <span class=no>$(l10n number)</span><!--
- --><span class=date>$(l10n date)</span><!--
- --><span class=therapist>$(l10n therapist)</span><!--
- --><span class=signature>$(l10n signature)</span>
-  </label>
-EOF
-
-therapy_sessions
-
-_checked="$(validate "$tpy[penwidth]" '(4|12|36)' '4')"
-cat <<EOF
-  <fieldset class="penwidth">
-    <input type="radio" name="penwidth" value="4"  id="pw1" $(checked  4)><label for="pw2"></label>
-    <input type="radio" name="penwidth" value="12" id="pw2" $(checked 12)><label for="pw3"></label>
-    <input type="radio" name="penwidth" value="36" id="pw3" $(checked 36)><label for="pw1"></label>
-  </fieldset>
-EOF
-
-_checked="$(validate "$tpy[color]" '#(0[0A]{2}|A00|A0A|AA0|FFF)' '#000')"
-cat <<EOF
-  <fieldset class="color">
-    <input class="color" type="radio" name="color" value="#000" id="c000" $(checked \#000)><label for="c000"></label>
-    <input class="color" type="radio" name="color" value="#00A" id="c001" $(checked \#00A)><label for="c001"></label>
-    <input class="color" type="radio" name="color" value="#0A0" id="c010" $(checked \#0A0)><label for="c010"></label>
-    <input class="color" type="radio" name="color" value="#0AA" id="c011" $(checked \#0AA)><label for="c011"></label>
-    <input class="color" type="radio" name="color" value="#A00" id="c100" $(checked \#A00)><label for="c100"></label>
-    <input class="color" type="radio" name="color" value="#A0A" id="c101" $(checked \#A0A)><label for="c101"></label>
-    <input class="color" type="radio" name="color" value="#AA0" id="c110" $(checked \#AA0)><label for="c110"></label>
-    <input class="color" type="radio" name="color" value="#FFF" id="c111" $(checked \#FFF)><label for="c111"></label>
-  </fieldset>
-  <img class="dotmark bg" src="?static=therapy_background.png" alt="WARNING: Background Image not available!">
-  <canvas id="canvas" class="dotmark ov" width="${bg_dim%x*}" height="${bg_dim#*x}"></canvas>
-
-  <input type=hidden id=image_serialize name=imagedata value="">
-
-  <button type="submit">$(l10n save)</button>
-</form>
-
-<span id="jsdebug" style="display: none; position: fixed; right:0; bottom:0">Debug</span>
-
-<script type="text/javascript" src="?static=therapy_draw.js"></script>
-EOF
-
-# vi:set filetype=html:
diff --git a/therapy/therapy.sh b/therapy/therapy.sh
deleted file mode 100755 (executable)
index 8885515..0000000
+++ /dev/null
@@ -1,56 +0,0 @@
-#!/bin/zsh
-
-# Copyright 2016 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/>. 
-
-declare -A tpy
-declare -A mpx
-
-BR='
-'
-
-id="$_GET[id]"
-
-tpyfile="$_DATA/therapies/$id"
-mpxfile="$_DATA/prescriptions/${id%.tpy}.mpx"
-client="$_DATA/vcard/${id%%.*}.vcf"
-
-identify "$_EXEC/static/therapy_background.png" \
-| sed -r 's;^.* ([0-9]+x[0-9]+) .*$;\1;' \
-| read bg_dim
-
-card_N="$(sed -nr 's:^(N)(;[^"\:]+|;"[^"]+")*\:(.*)$:\3:gp' "$client")"
-card_FN="$(sed -nr 's:^(FN)(;[^"\:]+|;"[^"]+")*\:(.*)$:\3:gp' "$client")"
-card_NICK="$(sed -nr 's:^(NICKNAME)(;[^"\:]+|;"[^"]+")*\:(.*)$:\3:gp' "$client")"
-
-n=$(printf %s "$card_N" \
-    | sed -rn 's:^([^;]*)(\;[^;]*)(\;[^;]*)?(\;[^;]*)?(\;[^;]*)?$:\4 \2 \3 \1 \5:gp' \
-    | sed -r 's:,: :;s:\;: :g;s: +: :g;s:^ $::;'
-   )
-client_name="${n:-${card_FN:-${card_NICK}}}"
-
-mpx=()
-cat "$mpxfile" |while read -r line; do
-  val="${line#*:}"
-  mpx[${line%%:*}]="$(htmlsafe "${val//\\n/$BR}")"
-done
-
-tpy=()
-cat "$tpyfile" |while read -r line; do
-  val="${line#*:}"
-  tpy[${line%%:*}]="$(htmlsafe "${val//\\n/$BR}")"
-done
diff --git a/therapy/therapy_background.png b/therapy/therapy_background.png
deleted file mode 100644 (file)
index a0574d5..0000000
Binary files a/therapy/therapy_background.png and /dev/null differ
diff --git a/therapy/therapy_background.xcf b/therapy/therapy_background.xcf
deleted file mode 100644 (file)
index e69c024..0000000
Binary files a/therapy/therapy_background.xcf and /dev/null differ
diff --git a/therapy/therapy_draw.js b/therapy/therapy_draw.js
deleted file mode 100644 (file)
index 8a8e936..0000000
+++ /dev/null
@@ -1,115 +0,0 @@
-// Copyright 2016 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/>. 
-
-body = document.body
-dbg = document.getElementById("jsdebug")
-canvas = document.getElementById("canvas")
-data=document.getElementById("image_serialize")
-
-image = canvas.getContext("2d")
-mouse = 0
-image_serialize=""
-
-// start and current coordinates of a draw
-// serves for tracking, whether path ends close to its beginning
-stx=0, sty=0
-cux=0, cuy=0
-
-function setstroke(w) {
-  image.lineWidth = w
-  data.value += " stroke-width " + image.lineWidth
-}
-function setcol(c) {
-  this.c = c
-  image.strokeStyle = c
-  image.fillStyle =  c
-  data.value += " stroke " + c + "F"
-}
-
-function relX(x){
-  if ( body.clientWidth >= 800 ){
-    return Math.floor(cscaleW * (x - canvas.offsetLeft))
-  } else { 
-    return Math.floor(cscaleW * (x - canvas.offsetLeft + window.pageXOffset))
-  }
-}
-function relY(y){
-  if ( body.clientWidth >= 800 ){
-    return Math.floor(cscaleH * (y - canvas.offsetTop))
-  } else { 
-    return Math.floor(cscaleH * (y - canvas.offsetTop + window.pageYOffset))
-  }
-}
-
-function draw(x, y) {
-  if ( mouse == 1){
-    cux=relX(x), cuy=relY(y)
-
-    image.lineTo( cux, cuy )
-    image.stroke()
-
-    image_serialize += " " + cux + "," + cuy
-  }
-}
-
-function drawstart(x, y) {
-  mouse = 1
-
-  cscaleW = canvas.width / canvas.clientWidth
-  cscaleH = canvas.height / canvas.clientHeight
-
-  stx=relX(x), sty=relY(y)
-
-  setstroke(document.querySelector('input[name="penwidth"]:checked').value);
-  setcol(document.querySelector('input[name="color"]:checked').value);
-
-  image.beginPath()
-  draw(x, y)  // why must this not use relative Coords ???
-
-  image_serialize = " polyline"
-}
-
-function drawstop() {
-  // if path ends close to beginning ( < 50 px); then close path and fill
-  if ( false && mouse == 1 && Math.sqrt( Math.pow(stx - cux, 2) + Math.pow(sty - cuy, 2)) <= 50 && c !== "#FFF" ){
-    image.lineTo( stx, sty )
-    image.stroke()
-
-    image.globalAlpha = .5
-    image.fill()
-    image.globalAlpha = 1
-
-    image_serialize += " " + stx + "," + sty
-    data.value += " fill " + c + "8" + image_serialize
-  } else if (mouse == 1)  {
-    data.value += " fill #0000 " + image_serialize
-  }
-  dbg.innerHTML = " stx: " + stx + " cux: " + cux + " sty: " + sty + " cuy: " + cuy
-  image.closePath()
-  image_serialize = ""
-  mouse = 0
-}
-
-window.addEventListener( 'mouseup',   function()   { drawstop() } )
-canvas.addEventListener( 'mousedown', function(e)  { drawstart(e.clientX, e.clientY) } )
-canvas.addEventListener( 'mousemove', function(e)  {      draw(e.clientX, e.clientY) } )
-
-window.addEventListener( 'touchend',   function()  { drawstop() } )
-canvas.addEventListener( 'touchstart', function(e) { drawstart(e.touches[0].clientX, e.touches[0].clientY) } )
-canvas.addEventListener( 'touchmove',  function(e) { e.preventDefault(); draw(e.touches[0].clientX, e.touches[0].clientY) } )
diff --git a/therapy/update_therapy.sh b/therapy/update_therapy.sh
deleted file mode 100755 (executable)
index 6ba06cb..0000000
+++ /dev/null
@@ -1,70 +0,0 @@
-#!/bin/zsh
-
-# Copyright 2016 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/>. 
-
-BR='
-'
-tpy="${_POST[id]}"
-
-tpyfile="$_DATA/therapies/$tpy"
-tempfile="$_DATA/temp/$tpy"
-
-# serialize POST array into file
-for key in ${(k)_POST}; do
-  [ "$key" != imagedata ] && printf %s:%s\\n "$key" "${_POST[$key]//$BR/\\n}"
-done >"$tempfile"
-
-if [ -n "$_POST[delete_session]" ]; then
-  n="$_POST[delete_session]"
-  sed -i -r '/^session'$n'[_:]/d' "$tempfile"
-  rm "${tpyfile%.tpy}_session${n}.png"
-
-  while grep -Eq '^session'$(($n + 1))'_' "$tempfile"; do
-    sed -i -r 's;^session'$(($n + 1))'(_|:);session'$n'\1;' "$tempfile"
-    mv "${tpyfile%.tpy}_session$(($n+1)).png" "${tpyfile%.tpy}_session${n}.png"
-    n=$(($n+1))
-  done
-
-elif [ -n "$_POST[new_session]" ]; then
-  sid="$_POST[new_session]"
-
-  identify "$_EXEC/static/therapy_background.png" \
-  | sed -r 's;^.* ([0-9]+x[0-9]+) .*$;\1;' \
-  | read dim
-
-  convert -size "$dim" xc:transparent "${tpyfile%.tpy}_${sid}.png"
-
-  printf '%s:exists\n' "$sid" >>"$tempfile"
-  printf '%s_open:checked\n' "$sid" >>"$tempfile"
-
-elif [ -n "$_POST[imagedata]" ]; then
-  sed -rn 's;^(session[0-9]+)_open:checked$;\1;p' "$tempfile" \
-  | sort -n \
-  | tail -n1 \
-  | read sid
-
-  convert "${tpyfile%.tpy}_${sid}.png" \
-          -strokewidth 2 -fill '#00000000' \
-          -draw "${_POST[imagedata]}" -transparent white \
-          "${tpyfile%.tpy}_${sid}.png"
-  sync
-fi
-
-mv "$tempfile" "$tpyfile"
-
-redirect "?p=therapy&id=${tpy}"
diff --git a/update_bookmarks.sh b/update_bookmarks.sh
deleted file mode 100755 (executable)
index 1670840..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-#!/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}#CONFIGURE"