version 0.2.14
[fms.git] / src / http / pages / optionspage.cpp
1 #include "../../../include/http/pages/optionspage.h"\r
2 #include "../../../include/stringfunctions.h"\r
3 \r
4 #ifdef XMEM\r
5         #include <xmem.h>\r
6 #endif\r
7 \r
8 const std::string OptionsPage::GeneratePage(const std::string &method, const std::map<std::string,std::string> &queryvars)\r
9 {\r
10         std::string content="<h2 style=\"text-align:center;\">Options</h2>\r\n";\r
11         content+="<form name=\"frmoptions\" method=\"POST\"><input type=\"hidden\" name=\"formaction\" value=\"save\">";\r
12         content+="<table><tr><th>Option</th><th>Value</th><th>Description</th></tr>";\r
13 \r
14         if(queryvars.find("formaction")!=queryvars.end() && (*queryvars.find("formaction")).second=="save")\r
15         {\r
16                 SQLite3DB::Statement update=m_db->Prepare("UPDATE tblOption SET OptionValue=? WHERE Option=?;");\r
17                 std::vector<std::string> options;\r
18                 std::vector<std::string> oldvalues;\r
19                 std::vector<std::string> newvalues;\r
20                 CreateArgArray(queryvars,"option",options);\r
21                 CreateArgArray(queryvars,"oldvalue",oldvalues);\r
22                 CreateArgArray(queryvars,"value",newvalues);\r
23 \r
24                 for(int i=0; i<options.size(); i++)\r
25                 {\r
26                         if(oldvalues[i]!=newvalues[i])\r
27                         {\r
28                                 update.Bind(0,newvalues[i]);\r
29                                 update.Bind(1,options[i]);\r
30                                 update.Step();\r
31                                 update.Reset();\r
32                         }\r
33                 }\r
34         }\r
35 \r
36         SQLite3DB::Statement st=m_db->Prepare("SELECT Option,OptionValue,OptionDescription FROM tblOption;");\r
37         st.Step();\r
38 \r
39         int count=0;\r
40         std::string countstr;\r
41         while(st.RowReturned())\r
42         {\r
43                 std::string option;\r
44                 std::string value;\r
45                 std::string description;\r
46 \r
47                 st.ResultText(0,option);\r
48                 st.ResultText(1,value);\r
49                 st.ResultText(2,description);\r
50 \r
51                 StringFunctions::Convert(count,countstr);\r
52                 content+="<tr>";\r
53                 content+="<td valign=\"top\"><input type=\"hidden\" name=\"option["+countstr+"]\" value=\""+option+"\">"+option+"</td>";\r
54                 content+="<td valign=\"top\"><input type=\"hidden\" name=\"oldvalue["+countstr+"]\" value=\""+value+"\">";\r
55 \r
56                 if(value!="true" && value!="false")\r
57                 {\r
58                         content+="<input type=\"text\" name=\"value["+countstr+"]\" value=\""+value+"\"></td>";\r
59                 }\r
60                 else\r
61                 {\r
62                         content+=CreateTrueFalseDropDown("value["+countstr+"]",value);\r
63                 }\r
64 \r
65                 content+="<td valign=\"top\">"+description+"</td>";\r
66                 content+="</tr>";\r
67                 st.Step();\r
68                 count++;\r
69         }\r
70 \r
71         content+="<tr><td colspan=\"3\"><center><input type=\"submit\" value=\"Save\"></form></td></tr>";\r
72         content+="</table>";\r
73         \r
74         return "HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n"+StringFunctions::Replace(m_template,"[CONTENT]",content);\r
75 }\r
76 \r
77 const bool OptionsPage::WillHandleURI(const std::string &uri)\r
78 {\r
79         if(uri.find("options.")!=std::string::npos)\r
80         {\r
81                 return true;\r
82         }\r
83         else\r
84         {\r
85                 return false;\r
86         }\r
87 }\r