function postsubmit(){
if ( this.status == 200 ) {
+ document.querySelector('#report input[name="tid"]').setAttribute('value', this.response);
console.log('successful auto submit of form data');
button.setAttribute('style', 'display: none;');
} else {
function formencode(fd){
var send;
- send='autosubmit=false';
+ send='autosubmit=true';
for (var tup of fd.entries()){
send += '&' + encodeURIComponent(tup[0]) + '=' + encodeURIComponent(tup[1]);
}
cat <<EOF
[form #report method=POST action="/therapies/update_therapy.sh"
- [hidden "id" "$id"]
+ [hidden "id" "$id"][hidden "tid" "$(transid "$tpyfile")"]
[input .stickynote type=checkbox name=c_stickynote #show_stickynote]
[fieldset .stickynote
# along with Confetti. If not, see <http://www.gnu.org/licenses/>.
. "$_EXEC/pdiread.sh"
-tpy=$(POST id)
+tpy="$(POST id)"
tpyfile="$_DATA/therapies/${tpy}.tpy"
tempfile="$_DATA/temp/${tpy}.tpy"
+if [ "$(POST tid)" != "$(transid "$tpyfile")" ]; then
+ if [ "$(POST autosubmit)" = "true" ]; then
+ printf 'Status: 409 Conflict\r\nContent-Length: 0\r\n\r\n'
+ exit 0
+ else
+ SET_COOKIE session message="TRANSACTION CONFLICT"
+ REDIRECT "/therapies/${tpy%.*}/${tpy#*.}"
+ fi
+fi
+
# serialize POST array into file
for key in $(POST_KEYS); do
case "$key" in
- imagedata) : ;;
+ imagedata|tid) : ;;
session*_date)
value="$(POST "$key")"
y=0 mon=0 dom=0
sync
fi
-mv "$tempfile" "$tpyfile"
-rm -f "${_DATA}/cache/${tpy%%.*}.vcf.cache"
+if ! diff -q "$tempfile" "$tpyfile" >/dev/null; then
+ mv "$tempfile" "$tpyfile"
+ rm -f -- "${_DATA}/cache/${tpy%%.*}.vcf.cache"
+fi
if [ "$(POST autosubmit)" = "true" ]; then
- printf 'HTTP/1.1 200 OK\r\nContent-Length: 0\r\n\r\n'
+ msg="$(transid "$tpyfile")"
+ printf 'HTTP/1.1 200 OK\r\nContent-Length: %i\r\n\r\n%s' \
+ "${#msg}" "${msg}"
else
REDIRECT "/therapies/${tpy%.*}/${tpy#*.}"
fi