1 #include "../../../include/http/pages/optionspage.h"
\r
2 #include "../../../include/stringfunctions.h"
\r
8 const std::string OptionsPage::CreateDropDown(const std::string &name, const std::vector<std::string> &items, const std::string &selecteditem)
\r
10 std::string rval="";
\r
12 rval+="<select name=\""+name+"\">";
\r
14 std::vector<std::string>::const_iterator i=items.begin();
\r
15 while(i!=items.end())
\r
17 rval+="<option value=\""+(*i)+"\"";
\r
18 if((*i)==selecteditem)
\r
37 const std::string OptionsPage::GeneratePage(const std::string &method, const std::map<std::string,std::string> &queryvars)
\r
39 std::string content="<h2 style=\"text-align:center;\">Options</h2>\r\n";
\r
40 content+="<form name=\"frmoptions\" method=\"POST\"><input type=\"hidden\" name=\"formaction\" value=\"save\">";
\r
41 content+=CreateFormPassword();
\r
42 content+="<table><tr><th>Option</th><th>Value</th><th>Description</th></tr>";
\r
44 if(queryvars.find("formaction")!=queryvars.end() && (*queryvars.find("formaction")).second=="save" && ValidateFormPassword(queryvars))
\r
46 SQLite3DB::Statement update=m_db->Prepare("UPDATE tblOption SET OptionValue=? WHERE Option=?;");
\r
47 std::vector<std::string> options;
\r
48 std::vector<std::string> oldvalues;
\r
49 std::vector<std::string> newvalues;
\r
50 CreateArgArray(queryvars,"option",options);
\r
51 CreateArgArray(queryvars,"oldvalue",oldvalues);
\r
52 CreateArgArray(queryvars,"value",newvalues);
\r
54 for(int i=0; i<options.size(); i++)
\r
56 if(oldvalues[i]!=newvalues[i])
\r
58 update.Bind(0,newvalues[i]);
\r
59 update.Bind(1,options[i]);
\r
67 SQLite3DB::Statement st=m_db->Prepare("SELECT Option,OptionValue,OptionDescription,Section,ValidValues FROM tblOption ORDER BY SortOrder;");
\r
71 std::string countstr;
\r
72 std::string lastsection="";
\r
73 while(st.RowReturned())
\r
77 std::string description;
\r
78 std::string section;
\r
79 std::string validvalues;
\r
80 std::vector<std::string> validvaluevec;
\r
82 st.ResultText(0,option);
\r
83 st.ResultText(1,value);
\r
84 st.ResultText(2,description);
\r
85 st.ResultText(3,section);
\r
86 if(st.ResultNull(4)==false)
\r
88 st.ResultText(4,validvalues);
\r
89 StringFunctions::Split(validvalues,"|",validvaluevec);
\r
92 if(section!=lastsection)
\r
95 content+="<td colspan=\"3\"><h3>"+section+"</h3></td>";
\r
97 lastsection=section;
\r
100 StringFunctions::Convert(count,countstr);
\r
102 content+="<td valign=\"top\"><input type=\"hidden\" name=\"option["+countstr+"]\" value=\""+option+"\">"+option+"</td>";
\r
103 content+="<td valign=\"top\"><input type=\"hidden\" name=\"oldvalue["+countstr+"]\" value=\""+value+"\">";
\r
105 if(validvaluevec.size()>0)
\r
107 content+=CreateDropDown("value["+countstr+"]",validvaluevec,value);
\r
109 else if(value!="true" && value!="false")
\r
111 content+="<input type=\"text\" name=\"value["+countstr+"]\" value=\""+value+"\"></td>";
\r
115 content+=CreateTrueFalseDropDown("value["+countstr+"]",value);
\r
118 content+="<td valign=\"top\">"+description+"</td>";
\r
123 content+="<input type=\"hidden\" name=\"param[0]\" value=\"\">";
\r
124 content+="<tr><td colspan=\"3\"><center><input type=\"submit\" value=\"Save\"></form></td></tr>";
\r
125 content+="</table>";
\r
127 return StringFunctions::Replace(m_template,"[CONTENT]",content);
\r
130 const bool OptionsPage::WillHandleURI(const std::string &uri)
\r
132 if(uri.find("options.")!=std::string::npos)
\r