1 #include "../../../include/http/pages/optionspage.h"
\r
2 #include "../../../include/stringfunctions.h"
\r
8 int OptionsPage::m_mode=1;
\r
10 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
12 std::string rval("");
\r
14 rval+="<select name=\""+name+"\">";
\r
16 std::vector<std::string>::const_iterator i=items.begin();
\r
17 while(i!=items.end())
\r
19 rval+="<option value=\""+(*i)+"\"";
\r
20 if((*i)==selecteditem)
\r
39 const std::string OptionsPage::CreateTextArea(const std::string &name, const std::string ¤tvalue, const std::string ¶m1, const std::string ¶m2)
\r
41 std::string html("");
\r
43 html+="<textarea name=\""+name+"\"";
\r
46 html+=" cols=\""+param1+"\"";
\r
50 html+=" rows=\""+param2+"\"";
\r
53 html+=SanitizeTextAreaOutput(currentvalue);
\r
54 html+="</textarea>";
\r
59 const std::string OptionsPage::CreateTextBox(const std::string &name, const std::string ¤tvalue, const std::string ¶m1, const std::string ¶m2)
\r
61 std::string html("");
\r
63 html+="<input type=\"text\" name=\""+name+"\" value=\""+currentvalue+"\"";
\r
66 html+=" size=\""+param1+"\"";
\r
70 html+=" maxlength=\""+param2+"\"";
\r
78 const std::string OptionsPage::GeneratePage(const std::string &method, const std::map<std::string,std::string> &queryvars)
\r
80 std::string content("");
\r
81 std::string sql("");
\r
83 if(queryvars.find("formaction")!=queryvars.end() && (*queryvars.find("formaction")).second=="save" && ValidateFormPassword(queryvars))
\r
85 SQLite3DB::Statement update=m_db->Prepare("UPDATE tblOption SET OptionValue=? WHERE Option=?;");
\r
86 std::vector<std::string> options;
\r
87 std::vector<std::string> oldvalues;
\r
88 std::vector<std::string> newvalues;
\r
89 CreateArgArray(queryvars,"option",options);
\r
90 CreateArgArray(queryvars,"oldvalue",oldvalues);
\r
91 CreateArgArray(queryvars,"value",newvalues);
\r
93 for(int i=0; i<options.size(); i++)
\r
95 if(oldvalues[i]!=newvalues[i])
\r
97 update.Bind(0,newvalues[i]);
\r
98 update.Bind(1,options[i]);
\r
106 if(queryvars.find("mode")!=queryvars.end())
\r
108 if((*queryvars.find("mode")).second=="2")
\r
118 content+="<h2 style=\"text-align:center;\">Options</h2>\r\n";
\r
119 content+="<div style=\"text-align:center;\">";
\r
122 content+="Simple | <a href=\""+m_pagename+"?mode=2\">Advanced</a>";
\r
126 content+="<a href=\""+m_pagename+"?mode=1\">Simple</a> | Advanced</a>";
\r
130 content+="<form name=\"frmoptions\" method=\"POST\"><input type=\"hidden\" name=\"formaction\" value=\"save\">";
\r
131 content+=CreateFormPassword();
\r
132 content+="<table>\r\n";
\r
136 sql="SELECT Option,OptionValue,OptionDescription,Section,ValidValues,DisplayType,DisplayParam1,DisplayParam2 FROM tblOption WHERE Mode='simple' ORDER BY SortOrder;";
\r
140 sql="SELECT Option,OptionValue,OptionDescription,Section,ValidValues,DisplayType,DisplayParam1,DisplayParam2 FROM tblOption ORDER BY SortOrder;";
\r
142 SQLite3DB::Statement st=m_db->Prepare(sql);
\r
146 std::string countstr;
\r
147 std::string lastsection("");
\r
148 while(st.RowReturned())
\r
150 std::string option("");
\r
151 std::string value("");
\r
152 std::string description("");
\r
153 std::string section("");
\r
154 std::string validvalues("");
\r
155 std::vector<std::string> validvaluevec;
\r
156 std::string displaytype("");
\r
157 std::string displayparam1("");
\r
158 std::string displayparam2("");
\r
160 st.ResultText(0,option);
\r
161 st.ResultText(1,value);
\r
162 st.ResultText(2,description);
\r
163 st.ResultText(3,section);
\r
164 if(st.ResultNull(4)==false)
\r
166 st.ResultText(4,validvalues);
\r
167 StringFunctions::Split(validvalues,"|",validvaluevec);
\r
169 st.ResultText(5,displaytype);
\r
170 st.ResultText(6,displayparam1);
\r
171 st.ResultText(7,displayparam2);
\r
173 if(section!=lastsection)
\r
176 content+="<td colspan=\"3\"><h3>"+section+"</h3></td>";
\r
178 lastsection=section;
\r
181 StringFunctions::Convert(count,countstr);
\r
183 content+="<td valign=\"top\" class=\"optionname\"><input type=\"hidden\" name=\"option["+countstr+"]\" value=\""+option+"\">"+option+"</td>";
\r
184 content+="<td valign=\"top\"><input type=\"hidden\" name=\"oldvalue["+countstr+"]\" value=\""+value+"\">";
\r
186 if(displaytype=="textbox")
\r
188 content+=CreateTextBox("value["+countstr+"]",value,displayparam1,displayparam2);
\r
190 else if(displaytype=="select")
\r
192 content+=CreateDropDown("value["+countstr+"]",validvaluevec,value,displayparam1,displayparam2);
\r
194 else if(displaytype=="textarea")
\r
196 content+=CreateTextArea("value["+countstr+"]",value,displayparam1,displayparam2);
\r
200 content+="Currently Unsupported";
\r
204 if(validvaluevec.size()>0)
\r
206 content+=CreateDropDown("value["+countstr+"]",validvaluevec,value);
\r
208 else if(value!="true" && value!="false")
\r
210 content+="<input type=\"text\" name=\"value["+countstr+"]\" value=\""+value+"\">";
\r
214 content+=CreateTrueFalseDropDown("value["+countstr+"]",value);
\r
218 content+="</td></tr>\r\n";
\r
219 content+="<tr><td valign=\"top\" class=\"optiondescription\" colspan=\"2\">"+description+"</td>";
\r
220 content+="</tr>\r\n";
\r
224 content+="<input type=\"hidden\" name=\"param[0]\" value=\"\">";
\r
225 content+="<tr><td colspan=\"3\"><center><input type=\"submit\" value=\"Save\"></form></td></tr>";
\r
226 content+="</table>";
\r
228 return StringFunctions::Replace(m_template,"[CONTENT]",content);
\r
231 const bool OptionsPage::WillHandleURI(const std::string &uri)
\r
233 if(uri.find("options.")!=std::string::npos)
\r