From 7c8bbde92f679513baa2ef20527ac922c15b654b Mon Sep 17 00:00:00 2001 From: Stefan Ritt Date: Wed, 17 Nov 2010 14:39:10 +0000 Subject: [PATCH] Prevent form submission via key, put focus on first input field SVN revision: 2342 --- src/elogd.c | 27 ++++++++++++++++++++++----- 1 file changed, 22 insertions(+), 5 deletions(-) diff --git a/src/elogd.c b/src/elogd.c index 0d0ff208..1384e1a4 100755 --- a/src/elogd.c +++ b/src/elogd.c @@ -9177,7 +9177,7 @@ void show_edit_form(LOGBOOK * lbs, int message_id, BOOL breply, BOOL bedit, BOOL svalue[MAX_N_ATTR + 10][NAME_LENGTH], owner[256], locked_by[256], class_value[80], class_name[80], ua[NAME_LENGTH], mid[80], title[256], login_name[256], full_name[256], cookie[256], orig_author[256], attr_moptions[MAX_N_LIST][NAME_LENGTH], ref[256], file_enc[256], tooltip[10000], - enc_attr[NAME_LENGTH], user_email[256], cmd[256], thumb_name[256], **user_list; + enc_attr[NAME_LENGTH], user_email[256], cmd[256], thumb_name[256], **user_list, fid[20]; time_t now, ltime; char fl[8][NAME_LENGTH]; struct tm *pts; @@ -9619,7 +9619,7 @@ void show_edit_form(LOGBOOK * lbs, int message_id, BOOL breply, BOOL bedit, BOOL rsprintf("var entry_modified = false;\n"); } else rsprintf("var entry_modified = false;\n"); - + rsprintf("var submission_blocked = true;\n"); rsprintf("\n"); rsprintf("function chkform()\n"); rsprintf("{\n"); @@ -9761,6 +9761,12 @@ void show_edit_form(LOGBOOK * lbs, int message_id, BOOL breply, BOOL bedit, BOOL } + /* check if sumbission is not blocked. Needed to avoid submission by hitting */ + rsprintf(" if (submission_blocked) {\n"); + rsprintf(" submission_blocked = false;\n"); + rsprintf(" return false;\n"); + rsprintf(" }\n"); + rsprintf(" submitted = true;\n"); rsprintf(" return true;\n"); rsprintf("}\n\n"); @@ -9810,13 +9816,19 @@ void show_edit_form(LOGBOOK * lbs, int message_id, BOOL breply, BOOL bedit, BOOL rsprintf("}\n\n"); /* mod() gets called via "onchange" event */ - rsprintf("function mod()\n"); + rsprintf("function mod(e)\n"); rsprintf("{\n"); rsprintf(" entry_modified = true;\n"); rsprintf(" window.status = \"%s\";\n", loc("Entry has been modified")); rsprintf(" document.form1.entry_modified.value = \"1\";\n"); rsprintf("}\n\n"); + rsprintf("function kp(e)\n"); + rsprintf("{\n"); + rsprintf(" var e = e || window.event;\n"); + rsprintf(" submission_blocked = (e.keyCode == 13)\n"); + rsprintf("}\n\n"); + /* switch_smileys turn on/off the smiley bar by setting the smcmd, which in turn sets the hsm=0/hsm=1 cookie */ rsprintf("function switch_smileys()\n"); @@ -9943,6 +9955,8 @@ void show_edit_form(LOGBOOK * lbs, int message_id, BOOL breply, BOOL bedit, BOOL script_onfocus[0] = 0; if ((isparam("inlineatt") && *getparam("inlineatt")) || bpreview) strcpy(script_onload, "document.form1.Text.focus();"); + else + strcpy(script_onload, "i=document.getElementById('fid');if(i)i.focus()"); if (enc_selected == 0) { if (!getcfg(lbs->name, "Message height", str, sizeof(str)) && @@ -10086,6 +10100,8 @@ void show_edit_form(LOGBOOK * lbs, int message_id, BOOL breply, BOOL bedit, BOOL n_disp_attr = n_attr; } + strcpy(fid, "id=\"fid\" "); + /* display attributes */ for (aindex = 0; aindex < n_disp_attr; aindex++) { @@ -10450,8 +10466,9 @@ void show_edit_form(LOGBOOK * lbs, int message_id, BOOL breply, BOOL bedit, BOOL strencode2(str, attrib[index], sizeof(str)); rsprintf - ("\n", - input_size, input_maxlen, ua, str); + ("\n", + fid, input_size, input_maxlen, ua, str); + fid[0] = 0; rsprintf("\n"); }