87c656377e1664b3175828540e1d371631fffdda chinhli Tue Jun 11 19:45:38 2013 -0700 Thank you suggestion confirmed page. diff --git src/hg/hgUserSuggestion/hgUserSuggestion.c src/hg/hgUserSuggestion/hgUserSuggestion.c index ef2c05f..a7e8ebc 100644 --- src/hg/hgUserSuggestion/hgUserSuggestion.c +++ src/hg/hgUserSuggestion/hgUserSuggestion.c @@ -20,31 +20,31 @@ /* ---- Global variables. ---- */ struct cart *cart; /* The user's ui state. */ struct hash *oldVars = NULL; /* ---- Global helper functions ---- */ void checkHgConfForSuggestion() /* Abort if hg.conf has not been set up to accept suggestion */ { if (isEmpty(cfgOption(CFG_SUGGEST_MAILTOADDR)) || isEmpty(cfgOption(CFG_SUGGEST_MAILFROMADDR)) || isEmpty(cfgOption(CFG_FILTERKEYWORD)) || isEmpty(cfgOption(CFG_SUGGEST_MAIL_SIGNATURE)) || isEmpty(cfgOption(CFG_SUGGEST_MAIL_RETURN_ADDR)) || isEmpty(cfgOption(CFG_SUGGEST_BROWSER_NAME))) - errAbort("This Genome Browser has not been configured to accept suggestion yet. Please contact the browser administrator for more information."); + errAbort("This Genome Browser has not been configured to accept suggestions yet. Please contact the browser administrator for more information."); } char *mailToAddr() /* Return the address to send suggestion to */ { return cloneString(cfgOption(CFG_SUGGEST_MAILTOADDR)); } char *mailFromAddr() /* Return the bogus sender address to help filter out spam */ { return cloneString(cfgOption(CFG_SUGGEST_MAILFROMADDR)); } char *filterKeyword() @@ -109,31 +109,30 @@ " </select><BR>\n"); hPrintf( " <label for=\"summary\">Summary:</label><input type=\"text\" name=\"suggestSummary\" id=\"summary\" size=\"50\" /><BR>\n" " <label for=\"details\">Details:</label><BR><textarea name=\"suggestDetails\" id=\"details\" cols=\"100\" rows=\"10\"></textarea><BR> \n" " </div>\n"); hPrintf( " <p>\n" " <label for=\"code\">Enter the following value below: <span id=\"txtCaptchaDiv\" style=\"color:#F00\"></span><BR><!-- this is where the script will place the generated code --> \n" " <input type=\"hidden\" id=\"txtCaptcha\" /></label><!-- this is where the script will place a copy of the code for validation: this is a hidden field -->\n" " <input type=\"text\" name=\"txtInput\" id=\"txtInput\" size=\"30\" />\n" " </p>\n"); hPrintf( " <div class=\"formControls\">\n" " <input id=\"sendButton\" type=\"button\" value=\"Send\" onclick=\"submitform()\"/> \n" " <input type=\"reset\" name=\"suggestClear\" value=\"Clear\" class=\"largeButton\"> \n" -// " <input type=\"cancel\" name=\"Cancel\" value=\"Cancel\" class=\"largeButton\">\n" " </div>\n" " \n" " </FORM>\n\n"); } void printValidateScript() /* javascript to validate form inputs */ { hPrintf( " <script type=\"text/javascript\">\n" " function validateMainForm(theform)\n" " {\n" " var x=theform.suggestName.value;\n" " if (x==null || x==\"\")\n" " {\n" " alert(\"Name field must be filled out\");\n" @@ -244,42 +243,49 @@ void printSubmitFormScript() /* javascript to submit form */ { hPrintf( " <script type=\"text/javascript\">\n" " function submitform()\n" " {\n" " if ( validateMainForm(document.forms[\"mainForm\"]) && checkCaptcha(document.forms[\"mainForm\"]))\n" " {\n" " document.forms[\"mainForm\"].submit();\n" " }\n" " }\n" " </script>\n\n"); } -void printSuggestionConfirmed() +void printSuggestionConfirmed(char *summary, char * refID, char *userAddr, char *adminAddr, char *details) +/* display suggestion confirm page */ { hPrintf( "<h2>Thank you for your suggestion!</h2>"); hPrintf( "<p>" - "Thank you for your suggestion regarding the UCSC Genome Browser.<BR>" - "A confirmation mail has send to you containing an unique suggestion ID,<BR>" -"Please use this ID for all future communications related to this suggestion.</p><BR>"); + "Thank you for your suggestion regarding %s. <BR>" + "You may follow up on the status of your request at any time by sending email to %s " + "and quoting your reference number:<BR><BR>%s<BR><BR>" + "A copy of this information has also been sent to you at %s.<BR></p>", + summary, adminAddr, refID, userAddr); hPrintf( - "<p><a href=\"hgUserSuggestion\">Click here for more suggestions</a><BR></p>"); - + "<p><a href=\"hgUserSuggestion\">Click here if you wish to make additional suggestions.</a></p>"); +hPrintf( + "<p>" + "Your suggestion:<BR>" + "%s</p>", + details); } void sendSuggestionBack(char *sName, char *sEmail, char *sCategory, char *sSummary, char *sDetails, char *suggestID) /* send back the suggestion */ { /* parameters from hg.cong */ char *mailTo = mailToAddr(); char *mailFrom=mailFromAddr(); char *filter=filterKeyword(); char subject[256]; char msg[4096]; /* need to make larger */ safef(msg, sizeof(msg), "SuggestionID:: %s\nUserName:: %s\nUserEmail:: %s\nCategory:: %s\nSummary:: %s\n\n\nDetails::\n%s", suggestID, sName, sEmail, sCategory, sSummary, sDetails); @@ -329,31 +335,31 @@ char *sName=cartUsualString(cart,"suggestName",""); char *sEmail=cartUsualString(cart,"suggestEmail",""); char *sCategory=cartUsualString(cart,"suggestCategory",""); char *sSummary=cartUsualString(cart,"suggestSummary",""); char *sDetails=cartUsualString(cart,"suggestDetails",""); char suggestID[256]; safef(suggestID, sizeof(suggestID),"%s-%s", sEmail, now()); char subject[256]; safef(subject, sizeof(subject),"%s %s", filter, suggestID); /* send back the suggestion */ sendSuggestionBack(sName, sEmail, sCategory, sSummary, sDetails, suggestID); /* send confirmation mail to user */ sendConfirmMail(sEmail,suggestID); /* display confirmation page */ -printSuggestionConfirmed(); +printSuggestionConfirmed(sSummary, suggestID, sEmail, mailReturnAddr(), sDetails); cartRemove(cart, "do.suggestSendMail"); } void doMiddle(struct cart *theCart) /* Write header and body of html page. */ { char *db, *organism; cart = theCart; getDbAndGenome(cart, &db, &organism, oldVars); cartWebStart(theCart, db, "User Suggestion"); checkHgConfForSuggestion(); if (cartVarExists(cart, "do.suggestSendMail")) { submitSuggestion(); cartRemove(cart, "do.suggestSendMail");