$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
Subject: [Boost-commit] svn:boost r50936 - in sandbox/SOC/2007/cgi/branches/pickmeup/libs/cgi: build/msvc/9.0/Boost.CGI build/msvc/9.0/Boost.CGI/Amortization build/msvc/9.0/Boost.CGI/acgi_cookie_game build/msvc/9.0/Boost.CGI/acgi_echo build/msvc/9.0/Boost.CGI/acgi_hello_world build/msvc/9.0/Boost.CGI/cgi_ctemplate_debug_server build/msvc/9.0/Boost.CGI/cgi_debug_server build/msvc/9.0/Boost.CGI/cgi_echo build/msvc/9.0/Boost.CGI/cgi_hello_world build/msvc/9.0/Boost.CGI/fcgi_hello_world build/msvc/9.0/Boost.CGI/xcgi_server1 example/acgi/amortization example/acgi/echo example/fcgi/amortization
From: lists.drrngrvy_at_[hidden]
Date: 2009-01-31 18:43:52
Author: drrngrvy
Date: 2009-01-31 18:43:51 EST (Sat, 31 Jan 2009)
New Revision: 50936
URL: http://svn.boost.org/trac/boost/changeset/50936
Log:
* Fixing svn props.
* Minor changes to acgi_amortization.
Properties modified: 
   sandbox/SOC/2007/cgi/branches/pickmeup/libs/cgi/build/msvc/9.0/Boost.CGI/Amortization/Amortization.vcproj   (props changed)
   sandbox/SOC/2007/cgi/branches/pickmeup/libs/cgi/build/msvc/9.0/Boost.CGI/Amortization/Amortization.vcproj.360-SYSTEMS.darreng.user   (props changed)
   sandbox/SOC/2007/cgi/branches/pickmeup/libs/cgi/build/msvc/9.0/Boost.CGI/Boost.CGI.sln   (contents, props changed)
   sandbox/SOC/2007/cgi/branches/pickmeup/libs/cgi/build/msvc/9.0/Boost.CGI/acgi_cookie_game/acgi_cookie_game.vcproj   (props changed)
   sandbox/SOC/2007/cgi/branches/pickmeup/libs/cgi/build/msvc/9.0/Boost.CGI/acgi_cookie_game/acgi_cookie_game.vcproj.360-SYSTEMS.darreng.user   (props changed)
   sandbox/SOC/2007/cgi/branches/pickmeup/libs/cgi/build/msvc/9.0/Boost.CGI/acgi_echo/acgi_echo.vcproj   (props changed)
   sandbox/SOC/2007/cgi/branches/pickmeup/libs/cgi/build/msvc/9.0/Boost.CGI/acgi_echo/acgi_echo.vcproj.360-SYSTEMS.darreng.user   (props changed)
   sandbox/SOC/2007/cgi/branches/pickmeup/libs/cgi/build/msvc/9.0/Boost.CGI/acgi_hello_world/acgi_hello_world.vcproj   (props changed)
   sandbox/SOC/2007/cgi/branches/pickmeup/libs/cgi/build/msvc/9.0/Boost.CGI/acgi_hello_world/acgi_hello_world.vcproj.360-SYSTEMS.darreng.user   (props changed)
   sandbox/SOC/2007/cgi/branches/pickmeup/libs/cgi/build/msvc/9.0/Boost.CGI/cgi_ctemplate_debug_server/cgi_ctemplate_debug_server.vcproj   (contents, props changed)
   sandbox/SOC/2007/cgi/branches/pickmeup/libs/cgi/build/msvc/9.0/Boost.CGI/cgi_ctemplate_debug_server/cgi_ctemplate_debug_server.vcproj.360-SYSTEMS.darreng.user   (props changed)
   sandbox/SOC/2007/cgi/branches/pickmeup/libs/cgi/build/msvc/9.0/Boost.CGI/cgi_debug_server/cgi_debug_server.vcproj   (props changed)
   sandbox/SOC/2007/cgi/branches/pickmeup/libs/cgi/build/msvc/9.0/Boost.CGI/cgi_debug_server/cgi_debug_server.vcproj.360-SYSTEMS.darreng.user   (props changed)
   sandbox/SOC/2007/cgi/branches/pickmeup/libs/cgi/build/msvc/9.0/Boost.CGI/cgi_echo/cgi_echo.vcproj   (props changed)
   sandbox/SOC/2007/cgi/branches/pickmeup/libs/cgi/build/msvc/9.0/Boost.CGI/cgi_echo/cgi_echo.vcproj.360-SYSTEMS.darreng.user   (props changed)
   sandbox/SOC/2007/cgi/branches/pickmeup/libs/cgi/build/msvc/9.0/Boost.CGI/cgi_hello_world/cgi_hello_world.vcproj   (props changed)
   sandbox/SOC/2007/cgi/branches/pickmeup/libs/cgi/build/msvc/9.0/Boost.CGI/cgi_hello_world/cgi_hello_world.vcproj.360-SYSTEMS.darreng.user   (props changed)
   sandbox/SOC/2007/cgi/branches/pickmeup/libs/cgi/build/msvc/9.0/Boost.CGI/fcgi_hello_world/fcgi_hello_world.vcproj   (props changed)
   sandbox/SOC/2007/cgi/branches/pickmeup/libs/cgi/build/msvc/9.0/Boost.CGI/fcgi_hello_world/fcgi_hello_world.vcproj.360-SYSTEMS.darreng.user   (props changed)
   sandbox/SOC/2007/cgi/branches/pickmeup/libs/cgi/build/msvc/9.0/Boost.CGI/xcgi_server1/xcgi_server1.vcproj   (props changed)
   sandbox/SOC/2007/cgi/branches/pickmeup/libs/cgi/build/msvc/9.0/Boost.CGI/xcgi_server1/xcgi_server1.vcproj.360-SYSTEMS.darreng.user   (props changed)
   sandbox/SOC/2007/cgi/branches/pickmeup/libs/cgi/example/fcgi/amortization/amortization.css   (props changed)
   sandbox/SOC/2007/cgi/branches/pickmeup/libs/cgi/example/fcgi/amortization/amortization.js   (props changed)
Binary files modified: 
   sandbox/SOC/2007/cgi/branches/pickmeup/libs/cgi/build/msvc/9.0/Boost.CGI/Boost.CGI.ncb
   sandbox/SOC/2007/cgi/branches/pickmeup/libs/cgi/build/msvc/9.0/Boost.CGI/Boost.CGI.sln
   sandbox/SOC/2007/cgi/branches/pickmeup/libs/cgi/build/msvc/9.0/Boost.CGI/Boost.CGI.suo
   sandbox/SOC/2007/cgi/branches/pickmeup/libs/cgi/build/msvc/9.0/Boost.CGI/cgi_ctemplate_debug_server/cgi_ctemplate_debug_server.vcproj
Text files modified: 
   sandbox/SOC/2007/cgi/branches/pickmeup/libs/cgi/example/acgi/amortization/acgi_amort.html |    10 ++++-                                   
   sandbox/SOC/2007/cgi/branches/pickmeup/libs/cgi/example/acgi/amortization/acgi_amort.js   |     6 +-                                      
   sandbox/SOC/2007/cgi/branches/pickmeup/libs/cgi/example/acgi/amortization/main.cpp        |    61 ++++++++++++++++++++++++++++----------- 
   sandbox/SOC/2007/cgi/branches/pickmeup/libs/cgi/example/acgi/echo/main.cpp                |     7 +++-                                    
   4 files changed, 58 insertions(+), 26 deletions(-)
Modified: sandbox/SOC/2007/cgi/branches/pickmeup/libs/cgi/build/msvc/9.0/Boost.CGI/Boost.CGI.ncb
==============================================================================
Binary files. No diff available.
Modified: sandbox/SOC/2007/cgi/branches/pickmeup/libs/cgi/build/msvc/9.0/Boost.CGI/Boost.CGI.sln
==============================================================================
Binary files. No diff available.
Modified: sandbox/SOC/2007/cgi/branches/pickmeup/libs/cgi/build/msvc/9.0/Boost.CGI/Boost.CGI.suo
==============================================================================
Binary files. No diff available.
Modified: sandbox/SOC/2007/cgi/branches/pickmeup/libs/cgi/build/msvc/9.0/Boost.CGI/cgi_ctemplate_debug_server/cgi_ctemplate_debug_server.vcproj
==============================================================================
Binary files. No diff available.
Modified: sandbox/SOC/2007/cgi/branches/pickmeup/libs/cgi/example/acgi/amortization/acgi_amort.html
==============================================================================
--- sandbox/SOC/2007/cgi/branches/pickmeup/libs/cgi/example/acgi/amortization/acgi_amort.html	(original)
+++ sandbox/SOC/2007/cgi/branches/pickmeup/libs/cgi/example/acgi/amortization/acgi_amort.html	2009-01-31 18:43:51 EST (Sat, 31 Jan 2009)
@@ -49,9 +49,13 @@
       <td class="td1">Length of Loan</td>
       <td class="td2">
         <select name="TermYrs">
-          {{#SELECT_TERM_YEARS}}
-            <option value="{{TermYrs}}">{{TermYrs}} Years</option>
-          {{/SELECT_TERM_YEARS}}
+            <option value="5" {{TermYrs_5}}">5 Years</option>
+            <option value="7" {{TermYrs_7}}">7 Years</option>
+            <option value="10" {{TermYrs_10}}">10 Years</option>
+            <option value="20" {{TermYrs_20}}">20 Years</option>
+            <option value="30" {{TermYrs_30}}">30 Years</option>
+            <option value="40" {{TermYrs_40}}">40 Years</option>
+            <option value="50" {{TermYrs_50}}">50 Years</option>
         </select>
       </td>
       <td class="td1">Start with Payment</td>
Modified: sandbox/SOC/2007/cgi/branches/pickmeup/libs/cgi/example/acgi/amortization/acgi_amort.js
==============================================================================
--- sandbox/SOC/2007/cgi/branches/pickmeup/libs/cgi/example/acgi/amortization/acgi_amort.js	(original)
+++ sandbox/SOC/2007/cgi/branches/pickmeup/libs/cgi/example/acgi/amortization/acgi_amort.js	2009-01-31 18:43:51 EST (Sat, 31 Jan 2009)
@@ -119,7 +119,7 @@
 
 
 function replaceChar(entry) {
-	out = "$"; 
+	out = "£"; 
         add = ""; 
         temp = "" + entry;
         while (temp.indexOf(out)>-1) {
@@ -159,13 +159,13 @@
                         num=replaceChars(num);
                 if ( checkForm(num));
 {
-			num = num.toString().replace(/$|,/g,'');
+			num = num.toString().replace(/[$£,]/g,'');
                         if(isNaN(num)) num = "0";
                         num = Math.floor(num).toString();
                 for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++) 
                         num = num.substring(0,num.length-(4*i+3))+','+num.substring(num.length-(4*i+3));
                          
-	return ('$' + num );	
+	return ('£' + num );	
 }
 }
 
Modified: sandbox/SOC/2007/cgi/branches/pickmeup/libs/cgi/example/acgi/amortization/main.cpp
==============================================================================
--- sandbox/SOC/2007/cgi/branches/pickmeup/libs/cgi/example/acgi/amortization/main.cpp	(original)
+++ sandbox/SOC/2007/cgi/branches/pickmeup/libs/cgi/example/acgi/amortization/main.cpp	2009-01-31 18:43:51 EST (Sat, 31 Jan 2009)
@@ -27,6 +27,9 @@
 
 using namespace boost::acgi;
 
+#define DEFAULT_LOAN_AMT "£250,000"
+#define DEFAULT_INTEREST_RATE "6.000"
+
 /// Convert a string like '$250,000' into one like '250000'.
 std::string string_from_currency(std::string amt)
 {
@@ -44,36 +47,57 @@
   dict.SetValue("PrePmtFreq_" + val, " selected=\"selected\"");
 }
 
+template<typename Request, typename Dictionary>
+double get_term_years(Request& req, Dictionary& dict)
+{
+  std::string val(has_key(req[form], "TermYrs")
+                       ? req[form]["TermYrs"]
+                       : "");
+  dict.SetValue("TermYrs_" + val, " selected=\"selected\"");
+  return boost::lexical_cast<double>(val);
+}
+
+template<typename Request, typename Dictionary>
+double get_interest_rate(Request& req, Dictionary& dict)
+{
+  std::string val(has_key(req[form], "YearlyIntRate")
+                       ? req[form]["YearlyIntRate"]
+                       : DEFAULT_INTEREST_RATE);
+  dict.SetValue("YearlyIntRate", val);
+  return boost::lexical_cast<double>(val);
+  
+}
+
+template<typename Request, typename Dictionary>
+double get_loan_amount(Request& req, Dictionary& dict)
+{
+  std::string val(has_key(req[form], "LoanAmt")
+                       ? req[form]["LoanAmt"]
+                       : "£250,000");
+  dict.SetValue("LoanAmt", val);
+  return boost::lexical_cast<double>(string_from_currency(val));
+}
+
 /// This function fills the dictionary and sub-dictionaries with relevant values.
 template<typename Request>
 void fill_amortization_dictionary(google::TemplateDictionary& dict, Request& req)
 {
   dict.SetValue("SCRIPT_NAME", req.script_name());
-  dict.SetValue("LoanAmt", has_key(req[form],"LoadAmt")
-                              ? req[form]["LoanAmt"]
-                              : "£250,000");
-
-  dict.SetValue("YearlyIntRate", has_key(req[form],"YearlyIntRate")
-                                    ? req[form]["YearlyIntRate"]
-                                    : "6.000");
 
-  boost::array<std::string, 8> year_opts
-    = {{ "5", "7", "10", "20", "30", "40", "50" }};
-    
-  BOOST_FOREACH(std::string& year, year_opts)
-  {
-    dict.SetValueAndShowSection("TermYrs", year, "SELECT_TERM_YEARS");
-  }
-  
   get_prepayment_frequency(req, dict);
 
   if ( ! has_key(req[form], "Amortize") )
+  {
     dict.ShowSection("NotAmortize");
+    // Set some default values
+    dict.SetValue("LoanAmt", DEFAULT_LOAN_AMT);
+    dict.SetValue("YearlyIntRate", "6.000");
+  }
   else
   {
-    double P = boost::lexical_cast<double>(string_from_currency(req[form]["LoanAmt"]));
-    double i = boost::lexical_cast<double>(req[form]["YearlyIntRate"]) / 1200;
-    double n = boost::lexical_cast<double>(req[form]["TermYrs"]) * 12;
+    double P = get_loan_amount(req, dict);
+    double i = get_interest_rate(req, dict) / 1200;
+    double n = get_term_years(req, dict) * 12;
     double monthly_payments = (P*i) / (1 - std::pow((1+i), -n));
     
     google::TemplateDictionary* sub_dict = dict.AddSectionDictionary("RegPmtSummary");
@@ -189,6 +213,7 @@
     response resp;
 
     write_amortization_template(req, resp);
+    resp<< req[form]["YearlyIntRate"];
   
     return_(resp, req, 0);
   }catch(boost::system::system_error* err){
Modified: sandbox/SOC/2007/cgi/branches/pickmeup/libs/cgi/example/acgi/echo/main.cpp
==============================================================================
--- sandbox/SOC/2007/cgi/branches/pickmeup/libs/cgi/example/acgi/echo/main.cpp	(original)
+++ sandbox/SOC/2007/cgi/branches/pickmeup/libs/cgi/example/acgi/echo/main.cpp	2009-01-31 18:43:51 EST (Sat, 31 Jan 2009)
@@ -20,6 +20,7 @@
 #include <vector>
 ///////////////////////////////////////////////////////////
 #include "boost/cgi/acgi.hpp"
+#include "boost/cgi/utility/has_key.hpp"
 
 using namespace std;
 using namespace boost::acgi;
@@ -119,10 +120,12 @@
                "Process ID = " << process_id() << "<br />"
                "<form method=POST enctype='multipart/form-data'>"
                  "<input type=text name=name value='"
-          <<         req[post]["name"] << "' />"
+          <<         (has_key(req[post],"name") ? req[post]["name"] : "")
+          <<      "' />"
                  "<br />"
                  "<input type=text name=hello value='"
-          <<         req[post]["hello"] << "' />"
+          <<         (has_key(req[post],"hello") ? req[post]["hello"] : "")
+          <<      "' />"
                  "<br />"
                  "<input type=file name=user_file />"
                  "<input type=hidden name=cmd value=multipart_test />"