#include <xmem.h>\r
#endif\r
\r
-const std::string OptionsPage::CreateDropDown(const std::string &name, const std::vector<std::string> &items, const std::string &selecteditem)\r
+int OptionsPage::m_mode=1;\r
+\r
+const std::string OptionsPage::CreateDropDown(const std::string &name, const std::vector<std::string> &items, const std::string &selecteditem, const std::string ¶m1, const std::string ¶m2)\r
{\r
- std::string rval="";\r
+ std::string rval("");\r
\r
rval+="<select name=\""+name+"\">";\r
\r
return rval;\r
}\r
\r
+const std::string OptionsPage::CreateTextArea(const std::string &name, const std::string ¤tvalue, const std::string ¶m1, const std::string ¶m2)\r
+{\r
+ std::string html("");\r
+\r
+ html+="<textarea name=\""+name+"\"";\r
+ if(param1!="")\r
+ {\r
+ html+=" cols=\""+param1+"\"";\r
+ }\r
+ if(param2!="")\r
+ {\r
+ html+=" rows=\""+param2+"\"";\r
+ }\r
+ html+=">";\r
+ html+=SanitizeTextAreaOutput(currentvalue);\r
+ html+="</textarea>";\r
+\r
+ return html;\r
+}\r
+\r
+const std::string OptionsPage::CreateTextBox(const std::string &name, const std::string ¤tvalue, const std::string ¶m1, const std::string ¶m2)\r
+{\r
+ std::string html("");\r
+\r
+ html+="<input type=\"text\" name=\""+name+"\" value=\""+currentvalue+"\"";\r
+ if(param1!="")\r
+ {\r
+ html+=" size=\""+param1+"\"";\r
+ }\r
+ if(param2!="")\r
+ {\r
+ html+=" maxlength=\""+param2+"\"";\r
+ }\r
+ html+=">";\r
+\r
+ return html;\r
+\r
+}\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+=CreateFormPassword();\r
- content+="<table><tr><th>Option</th><th>Value</th><th>Description</th></tr>";\r
+ std::string content("");\r
+ std::string sql("");\r
\r
if(queryvars.find("formaction")!=queryvars.end() && (*queryvars.find("formaction")).second=="save" && ValidateFormPassword(queryvars))\r
{\r
\r
}\r
\r
- SQLite3DB::Statement st=m_db->Prepare("SELECT Option,OptionValue,OptionDescription,Section,ValidValues FROM tblOption ORDER BY SortOrder;");\r
+ if(queryvars.find("mode")!=queryvars.end())\r
+ {\r
+ if((*queryvars.find("mode")).second=="2")\r
+ {\r
+ m_mode=2;\r
+ }\r
+ else\r
+ {\r
+ m_mode=1;\r
+ }\r
+ }\r
+\r
+ content+="<h2 style=\"text-align:center;\">Options</h2>\r\n";\r
+ content+="<div style=\"text-align:center;\">";\r
+ if(m_mode==1)\r
+ {\r
+ content+="Simple | <a href=\""+m_pagename+"?mode=2\">Advanced</a>";\r
+ }\r
+ else\r
+ {\r
+ content+="<a href=\""+m_pagename+"?mode=1\">Simple</a> | Advanced</a>";\r
+ }\r
+ content+="</div>";\r
+\r
+ content+="<form name=\"frmoptions\" method=\"POST\"><input type=\"hidden\" name=\"formaction\" value=\"save\">";\r
+ content+=CreateFormPassword();\r
+ content+="<table>\r\n";\r
+\r
+ if(m_mode==1)\r
+ {\r
+ sql="SELECT Option,OptionValue,OptionDescription,Section,ValidValues,DisplayType,DisplayParam1,DisplayParam2 FROM tblOption WHERE Mode='simple' ORDER BY SortOrder;";\r
+ }\r
+ else\r
+ {\r
+ sql="SELECT Option,OptionValue,OptionDescription,Section,ValidValues,DisplayType,DisplayParam1,DisplayParam2 FROM tblOption ORDER BY SortOrder;";\r
+ }\r
+ SQLite3DB::Statement st=m_db->Prepare(sql);\r
st.Step();\r
\r
int count=0;\r
std::string countstr;\r
- std::string lastsection="";\r
+ std::string lastsection("");\r
while(st.RowReturned())\r
{\r
- std::string option;\r
- std::string value;\r
- std::string description;\r
- std::string section;\r
- std::string validvalues;\r
+ std::string option("");\r
+ std::string value("");\r
+ std::string description("");\r
+ std::string section("");\r
+ std::string validvalues("");\r
std::vector<std::string> validvaluevec;\r
+ std::string displaytype("");\r
+ std::string displayparam1("");\r
+ std::string displayparam2("");\r
\r
st.ResultText(0,option);\r
st.ResultText(1,value);\r
st.ResultText(4,validvalues);\r
StringFunctions::Split(validvalues,"|",validvaluevec);\r
}\r
+ st.ResultText(5,displaytype);\r
+ st.ResultText(6,displayparam1);\r
+ st.ResultText(7,displayparam2);\r
\r
if(section!=lastsection)\r
{\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\" class=\"optionname\"><input type=\"hidden\" name=\"option["+countstr+"]\" value=\""+option+"\">"+option+"</td>";\r
content+="<td valign=\"top\"><input type=\"hidden\" name=\"oldvalue["+countstr+"]\" value=\""+value+"\">";\r
\r
+ if(displaytype=="textbox")\r
+ {\r
+ content+=CreateTextBox("value["+countstr+"]",value,displayparam1,displayparam2);\r
+ }\r
+ else if(displaytype=="select")\r
+ {\r
+ content+=CreateDropDown("value["+countstr+"]",validvaluevec,value,displayparam1,displayparam2);\r
+ }\r
+ else if(displaytype=="textarea")\r
+ {\r
+ content+=CreateTextArea("value["+countstr+"]",value,displayparam1,displayparam2);\r
+ }\r
+ else\r
+ {\r
+ content+="Currently Unsupported";\r
+ }\r
+\r
+ /*\r
if(validvaluevec.size()>0)\r
{\r
content+=CreateDropDown("value["+countstr+"]",validvaluevec,value);\r
}\r
else if(value!="true" && value!="false")\r
{\r
- content+="<input type=\"text\" name=\"value["+countstr+"]\" value=\""+value+"\"></td>";\r
+ content+="<input type=\"text\" name=\"value["+countstr+"]\" value=\""+value+"\">";\r
}\r
else\r
{\r
content+=CreateTrueFalseDropDown("value["+countstr+"]",value);\r
}\r
+ */\r
\r
- content+="<td valign=\"top\">"+description+"</td>";\r
- content+="</tr>";\r
+ content+="</td></tr>\r\n";\r
+ content+="<tr><td valign=\"top\" class=\"optiondescription\" colspan=\"2\">"+description+"</td>";\r
+ content+="</tr>\r\n";\r
st.Step();\r
count++;\r
}\r