version 0.3.29
[fms.git] / src / http / pages / optionspage.cpp
index 5c61e16..4ec3233 100644 (file)
@@ -5,9 +5,11 @@
        #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 &param1, const std::string &param2)\r
 {\r
-       std::string rval="";\r
+       std::string rval("");\r
 \r
        rval+="<select name=\""+name+"\">";\r
 \r
@@ -34,12 +36,49 @@ const std::string OptionsPage::CreateDropDown(const std::string &name, const std
        return rval;\r
 }\r
 \r
+const std::string OptionsPage::CreateTextArea(const std::string &name, const std::string &currentvalue, const std::string &param1, const std::string &param2)\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 &currentvalue, const std::string &param1, const std::string &param2)\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
@@ -64,20 +103,59 @@ const std::string OptionsPage::GeneratePage(const std::string &method, const std
 \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
@@ -88,6 +166,9 @@ const std::string OptionsPage::GeneratePage(const std::string &method, const std
                        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
@@ -99,24 +180,44 @@ const std::string OptionsPage::GeneratePage(const std::string &method, const std
 \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