version 0.1.7
[fms.git] / src / http / pages / optionspage.cpp
diff --git a/src/http/pages/optionspage.cpp b/src/http/pages/optionspage.cpp
new file mode 100644 (file)
index 0000000..4c39834
--- /dev/null
@@ -0,0 +1,78 @@
+#include "../../../include/http/pages/optionspage.h"\r
+#include "../../../include/stringfunctions.h"\r
+\r
+#ifdef XMEM\r
+       #include <xmem.h>\r
+#endif\r
+\r
+const std::string OptionsPage::GeneratePage(const std::string &method, const std::map<std::string,std::string> &queryvars)\r
+{\r
+       std::string content="<h2 style=\"text-align:center;\">Options</h2>\r\n";\r
+       content+="<form name=\"frmoptions\" method=\"POST\"><input type=\"hidden\" name=\"formaction\" value=\"save\">";\r
+       content+="<table><tr><th>Option</th><th>Value</th><th>Description</th></tr>";\r
+\r
+       if(queryvars.find("formaction")!=queryvars.end() && (*queryvars.find("formaction")).second=="save")\r
+       {\r
+               SQLite3DB::Statement update=m_db->Prepare("UPDATE tblOption SET OptionValue=? WHERE Option=?;");\r
+               std::vector<std::string> options;\r
+               std::vector<std::string> oldvalues;\r
+               std::vector<std::string> newvalues;\r
+               CreateArgArray(queryvars,"option",options);\r
+               CreateArgArray(queryvars,"oldvalue",oldvalues);\r
+               CreateArgArray(queryvars,"value",newvalues);\r
+\r
+               for(int i=0; i<options.size(); i++)\r
+               {\r
+                       if(oldvalues[i]!=newvalues[i])\r
+                       {\r
+                               update.Bind(0,newvalues[i]);\r
+                               update.Bind(1,options[i]);\r
+                               update.Step();\r
+                               update.Reset();\r
+                       }\r
+               }\r
+       }\r
+\r
+       SQLite3DB::Statement st=m_db->Prepare("SELECT Option,OptionValue,OptionDescription FROM tblOption;");\r
+       st.Step();\r
+\r
+       int count=0;\r
+       std::string countstr;\r
+       while(st.RowReturned())\r
+       {\r
+               std::string option;\r
+               std::string value;\r
+               std::string description;\r
+\r
+               st.ResultText(0,option);\r
+               st.ResultText(1,value);\r
+               st.ResultText(2,description);\r
+\r
+               StringFunctions::Convert(count,countstr);\r
+               content+="<tr>";\r
+               content+="<td valign=\"top\"><input type=\"hidden\" name=\"option["+countstr+"]\" value=\""+option+"\">"+option+"</td>";\r
+               content+="<td valign=\"top\"><input type=\"hidden\" name=\"oldvalue["+countstr+"]\" value=\""+value+"\">";\r
+               content+="<input type=\"text\" name=\"value["+countstr+"]\" value=\""+value+"\"></td>";\r
+               content+="<td valign=\"top\">"+description+"</td>";\r
+               content+="</tr>";\r
+               st.Step();\r
+               count++;\r
+       }\r
+\r
+       content+="<tr><td colspan=\"3\"><center><input type=\"submit\" value=\"Save\"></form></td></tr>";\r
+       content+="</table>";\r
+       \r
+       return "HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n"+StringFunctions::Replace(m_template,"[CONTENT]",content);\r
+}\r
+\r
+const bool OptionsPage::WillHandleURI(const std::string &uri)\r
+{\r
+       if(uri.find("options.")!=std::string::npos)\r
+       {\r
+               return true;\r
+       }\r
+       else\r
+       {\r
+               return false;\r
+       }\r
+}\r