camping-abingo 1.0.3 → 1.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. data/doc/classes/ABingoCampingPlugin.html +16 -16
  2. data/doc/classes/ABingoCampingPlugin/Controllers.html +10 -10
  3. data/doc/classes/ABingoCampingPlugin/Filters.html +5 -5
  4. data/doc/classes/ABingoCampingPlugin/Helpers.html +65 -65
  5. data/doc/classes/ABingoCampingPlugin/Models.html +15 -15
  6. data/doc/classes/ABingoCampingPlugin/Models/Alternative.html +15 -15
  7. data/doc/classes/ABingoCampingPlugin/Models/Experiment.html +45 -45
  8. data/doc/classes/ABingoCampingPlugin/Views.html +15 -15
  9. data/doc/classes/ActiveSupport/Cache/MemoryStore.html +5 -5
  10. data/doc/classes/ActiveSupport/Cache/MemoryStore.src/M000001.html +18 -0
  11. data/doc/classes/CampingABingoTest.html +6 -6
  12. data/doc/classes/CampingABingoTest.src/M000002.html +24 -0
  13. data/doc/classes/CampingABingoTest/Controllers/Index.html +5 -5
  14. data/doc/classes/CampingABingoTest/Controllers/Index.src/M000009.html +18 -0
  15. data/doc/classes/CampingABingoTest/Controllers/Landing.html +5 -5
  16. data/doc/classes/CampingABingoTest/Controllers/Landing.src/M000011.html +18 -0
  17. data/doc/classes/CampingABingoTest/Controllers/SignIn.html +10 -10
  18. data/doc/classes/CampingABingoTest/Controllers/SignIn.src/M000015.html +18 -0
  19. data/doc/classes/CampingABingoTest/Controllers/SignIn.src/M000016.html +34 -0
  20. data/doc/classes/CampingABingoTest/Controllers/SignOut.html +5 -5
  21. data/doc/classes/CampingABingoTest/Controllers/SignOut.src/M000014.html +21 -0
  22. data/doc/classes/CampingABingoTest/Controllers/SignUp.html +10 -10
  23. data/doc/classes/CampingABingoTest/Controllers/SignUp.src/M000012.html +23 -0
  24. data/doc/classes/CampingABingoTest/Controllers/SignUp.src/M000013.html +33 -0
  25. data/doc/classes/CampingABingoTest/Controllers/Welcome.html +5 -5
  26. data/doc/classes/CampingABingoTest/Controllers/Welcome.src/M000010.html +18 -0
  27. data/doc/classes/CampingABingoTest/Helpers.html +1 -1
  28. data/doc/classes/CampingABingoTest/Models.html +1 -1
  29. data/doc/classes/CampingABingoTest/Models/CreateUserSchema.html +11 -11
  30. data/doc/classes/CampingABingoTest/Models/CreateUserSchema.src/M000017.html +26 -0
  31. data/doc/classes/CampingABingoTest/Models/CreateUserSchema.src/M000018.html +19 -0
  32. data/doc/classes/CampingABingoTest/Views.html +30 -30
  33. data/doc/classes/CampingABingoTest/Views.src/M000003.html +70 -0
  34. data/doc/classes/CampingABingoTest/Views.src/M000004.html +22 -0
  35. data/doc/classes/CampingABingoTest/Views.src/M000005.html +51 -0
  36. data/doc/classes/CampingABingoTest/Views.src/M000006.html +31 -0
  37. data/doc/classes/CampingABingoTest/Views.src/M000007.html +31 -0
  38. data/doc/classes/CampingABingoTest/Views.src/M000008.html +20 -0
  39. data/doc/created.rid +1 -1
  40. data/doc/files/examples/camping-abingo-test/camping-abingo-test_rb.html +1 -1
  41. data/doc/files/lib/camping-abingo_rb.html +3 -4
  42. data/doc/fr_class_index.html +0 -10
  43. data/doc/fr_file_index.html +0 -1
  44. data/doc/fr_method_index.html +18 -70
  45. data/examples/camping-abingo-test/camping-abingo-test-skeleton.rb +456 -0
  46. data/examples/camping-abingo-test/camping-abingo-test.rb +510 -0
  47. data/examples/camping-abingo-test/config.ru +26 -0
  48. data/examples/camping-abingo-test/config/database.yml +4 -0
  49. data/lib/camping-abingo.rb +1 -10
  50. metadata +50 -18
@@ -0,0 +1,70 @@
1
+ <?xml version="1.0" encoding="iso-8859-1"?>
2
+ <!DOCTYPE html
3
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
+
6
+ <html>
7
+ <head>
8
+ <title>layout (CampingABingoTest::Views)</title>
9
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
+ <link rel="stylesheet" href="../../.././rdoc-style.css" type="text/css" media="screen" />
11
+ </head>
12
+ <body class="standalone-code">
13
+ <pre><span class="ruby-comment cmt"># File examples/camping-abingo-test/camping-abingo-test.rb, line 166</span>
14
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">layout</span>
15
+ <span class="ruby-identifier">html</span> <span class="ruby-keyword kw">do</span>
16
+
17
+ <span class="ruby-identifier">head</span> <span class="ruby-keyword kw">do</span>
18
+ <span class="ruby-identifier">title</span> <span class="ruby-value str">&quot;Ruby Camping ABingo Plugin Demo&quot;</span>
19
+
20
+ <span class="ruby-identifier">style</span> <span class="ruby-identifier">:type</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'text/css'</span> <span class="ruby-keyword kw">do</span>
21
+ <span class="ruby-value str">&quot;\n/* --- General Test App Styles --- */\n\nbody {\npadding:0 0 0 0;\nmargin:5px;\nfont-family:'Lucida Grande','Lucida Sans Unicode',sans-serif;\nfont-size: 0.8em;\ncolor:#303030;\nbackground-color: #fbf9b5;\n}\n\na {\ncolor:#303030;\ntext-decoration:none;\nborder-bottom:1px dotted #505050;\n}\n\na:hover {\ncolor:#303030;\nbackground: yellow;\ntext-decoration:none;\nborder-bottom:4px solid orange;\n}\n\nh1 {\nfont-size: 14px;\ncolor: #cc3300;\n}\n\ntable {\nfont-size:0.9em;\nwidth: 1050px;\n}\n\ntr\n{\nbackground:lightgoldenRodYellow;\nvertical-align:top;\n}\n\nth\n{\nfont-size: 0.9em;\nfont-weight:bold;\nbackground:lightBlue none repeat scroll 0 0;\n\ntext-align:left;\n}\n\n#header\n{\nwidth: 100%;\nheight: 30px;\nborder-bottom: 4px solid #ccc;\n}\n\n#header_title\n{\nfloat: left;\n}\n\n#top_nav\n{\nfloat: right;\n}\n\n#footer\n{\nwidth: 100%;\nborder-top: 4px solid #ccc;\n}\n\n\n#footer_notices\n{\nwidth: 100%;\nborder-top: 4px solid #ccc;\n}\n\n#home\n{\nbackground-color: #C9E3F5;\npadding: 10px;\nheight: 300px;\n}\n\n#debug_panel\n{\nbackground-color: wheat;\npadding: 10px;\n}\n\n.xyz\n{\nbackground-color: #D1F2A5;\npadding: 10px;\nheight: 300px;\n}\n\n.xyz h1\n{\ncolor: #9D9F89;\n}\n\n#special_promo\n{\nmargin: 20px;\n}\n\n#landing a:hover\n{\nbackground-color: #B2DE93;\nborder-bottom-color:green;\n}\n\n#marketing\n{\nwidth: 480px;\nheight: 100px;\nmargin: 20px;\n}\n\n#benefits\n{\nfloat: left;\nwidth: 300px;\nheight: 100px;\nfont-size: 1.3em;\nfont-weight: bold;\ncolor: green;\nbackground-color: #B2DE93;\n}\n\n#actnow\n{\nfloat: right;\nwidth: 180px;\nheight: 100px;\ntext-align: center;\nbackground-color: #8BC59B;\n}\n\n#signup_btn\n{\nbackground-color:#91F1A0;\nborder:4px solid green;\nfont-size:1.5em;\nfont-weight:bold;\nheight:72px;\nmargin: 10px 20px 10px 22px;\nwidth:130px;\n}\n\n#actnow a:hover #signup_btn\n{\nbackground-color: #69F17F;\ncolor: #007300;\nborder: 4px solid #00AA00;\n}\n\n/* --- ABingo Dashboard Styles ---*/\n\n#abingo_dashboard\n{\nbackground-color: white;\npadding: 10px;\n}\n\nabingo_experiment_table\n{\nwidth: 100%;\n}\n\n.abingo_experiment_row\n{\n}\n\n.abingo_alternative_row\n{\ncolor: red;\nfont-weight: bold;\n}\n\n.abingo_debug\n{\ndisplay: block;\nwidth: 100%;\n}\n\n.abingo_explain\n{\ncolor: #CCC;\nfont-style:italics;\n}\n\n\n&quot;</span>
22
+ <span class="ruby-keyword kw">end</span>
23
+ <span class="ruby-keyword kw">end</span> <span class="ruby-comment cmt">#head</span>
24
+
25
+ <span class="ruby-identifier">body</span> <span class="ruby-keyword kw">do</span>
26
+ <span class="ruby-identifier">div</span>.<span class="ruby-identifier">header!</span> <span class="ruby-keyword kw">do</span>
27
+ <span class="ruby-identifier">div</span>.<span class="ruby-identifier">header_title!</span> <span class="ruby-value str">&quot;Ruby Camping ABingo Plugin Demo&quot;</span>
28
+ <span class="ruby-identifier">div</span>.<span class="ruby-identifier">top_nav!</span> <span class="ruby-keyword kw">do</span>
29
+ <span class="ruby-identifier">a</span> <span class="ruby-value str">&quot;Home&quot;</span>, <span class="ruby-identifier">:href=</span><span class="ruby-operator">&gt;</span><span class="ruby-value str">&quot;/&quot;</span>
30
+ <span class="ruby-identifier">span</span> <span class="ruby-value str">&quot; | &quot;</span>
31
+ <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@state</span>.<span class="ruby-identifier">nil?</span> <span class="ruby-operator">||</span> <span class="ruby-ivar">@state</span>.<span class="ruby-identifier">user_id</span>.<span class="ruby-identifier">nil?</span>
32
+ <span class="ruby-identifier">a</span> <span class="ruby-value str">&quot;Sign-In&quot;</span>, <span class="ruby-identifier">:href=</span><span class="ruby-operator">&gt;</span><span class="ruby-value str">'/signin'</span>
33
+ <span class="ruby-identifier">span</span> <span class="ruby-value str">&quot; | &quot;</span>
34
+ <span class="ruby-identifier">a</span> <span class="ruby-value str">&quot;Sign-Up&quot;</span>, <span class="ruby-identifier">:href=</span><span class="ruby-operator">&gt;</span><span class="ruby-value str">'/signup'</span>
35
+ <span class="ruby-keyword kw">else</span>
36
+ <span class="ruby-identifier">a</span> <span class="ruby-value str">&quot;XYZ&quot;</span>, <span class="ruby-identifier">:href=</span><span class="ruby-operator">&gt;</span><span class="ruby-value str">&quot;/welcome&quot;</span>
37
+ <span class="ruby-identifier">span</span> <span class="ruby-value str">&quot; | &quot;</span>
38
+ <span class="ruby-identifier">a</span> <span class="ruby-value str">&quot;Sign-Out&quot;</span>, <span class="ruby-identifier">:href=</span><span class="ruby-operator">&gt;</span><span class="ruby-value str">'/signout'</span>
39
+ <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@state</span>.<span class="ruby-identifier">user_id</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">abingo_administrator_user_id</span>
40
+ <span class="ruby-identifier">span</span> <span class="ruby-value str">&quot; | &quot;</span>
41
+ <span class="ruby-identifier">a</span> <span class="ruby-value str">&quot;ABingo Dashboard&quot;</span>, <span class="ruby-identifier">:href=</span><span class="ruby-operator">&gt;</span><span class="ruby-value str">&quot;/abingo/dashboard&quot;</span>
42
+ <span class="ruby-keyword kw">end</span>
43
+ <span class="ruby-keyword kw">end</span>
44
+ <span class="ruby-keyword kw">end</span>
45
+ <span class="ruby-keyword kw">end</span>
46
+
47
+ <span class="ruby-keyword kw">self</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-keyword kw">yield</span>
48
+
49
+ <span class="ruby-identifier">div</span>.<span class="ruby-identifier">footer!</span> <span class="ruby-keyword kw">do</span>
50
+ <span class="ruby-identifier">div</span>.<span class="ruby-identifier">debug_panel!</span> <span class="ruby-keyword kw">do</span>
51
+ <span class="ruby-identifier">h4</span> <span class="ruby-value str">&quot;Debugging Information:&quot;</span>
52
+ <span class="ruby-identifier">h5</span> <span class="ruby-value str">&quot;State:&quot;</span>
53
+ <span class="ruby-identifier">div</span> <span class="ruby-node">&quot;#{@state.inspect}&quot;</span>
54
+
55
+ <span class="ruby-identifier">h5</span> <span class="ruby-value str">&quot;Cache Data:&quot;</span>
56
+ <span class="ruby-keyword kw">if</span> <span class="ruby-constant">Abingo</span>.<span class="ruby-identifier">cache</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-constant">Abingo</span>.<span class="ruby-identifier">cache</span>.<span class="ruby-identifier">data</span>
57
+ <span class="ruby-constant">Abingo</span>.<span class="ruby-identifier">cache</span>.<span class="ruby-identifier">data</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span> <span class="ruby-identifier">k</span>,<span class="ruby-identifier">v</span> <span class="ruby-operator">|</span>
58
+ <span class="ruby-identifier">div</span>.<span class="ruby-identifier">abingo_debug</span> <span class="ruby-node">&quot;#{k} =&gt; #{v.inspect}&quot;</span>;
59
+ <span class="ruby-keyword kw">end</span>
60
+ <span class="ruby-keyword kw">end</span>
61
+ <span class="ruby-keyword kw">end</span>
62
+
63
+ <span class="ruby-identifier">div</span>.<span class="ruby-identifier">footer_notices!</span> { <span class="ruby-node">&quot;Copyright &amp;copy; 2010 &amp;nbsp; - #{ a('Patrick McKenzie', :href =&gt; 'http://www.bingocardcreator.com/abingo') } and #{ a('Philippe Monnet', :href =&gt; 'http://blog.monnet-usa.com/') } &quot;</span> }
64
+ <span class="ruby-keyword kw">end</span>
65
+ <span class="ruby-keyword kw">end</span>
66
+
67
+ <span class="ruby-keyword kw">end</span>
68
+ <span class="ruby-keyword kw">end</span></pre>
69
+ </body>
70
+ </html>
@@ -0,0 +1,22 @@
1
+ <?xml version="1.0" encoding="iso-8859-1"?>
2
+ <!DOCTYPE html
3
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
+
6
+ <html>
7
+ <head>
8
+ <title>index (CampingABingoTest::Views)</title>
9
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
+ <link rel="stylesheet" href="../../.././rdoc-style.css" type="text/css" media="screen" />
11
+ </head>
12
+ <body class="standalone-code">
13
+ <pre><span class="ruby-comment cmt"># File examples/camping-abingo-test/camping-abingo-test.rb, line 422</span>
14
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">index</span>
15
+ <span class="ruby-identifier">div</span>.<span class="ruby-identifier">home!</span> <span class="ruby-keyword kw">do</span>
16
+ <span class="ruby-identifier">h1</span> <span class="ruby-value str">'My CampingABingoTest App'</span>
17
+
18
+ <span class="ruby-identifier">a</span> <span class="ruby-value str">&quot;XYZ SAAS Application Landing page variations&quot;</span>, <span class="ruby-identifier">:href=</span><span class="ruby-operator">&gt;</span><span class="ruby-value str">&quot;/landing&quot;</span>; <span class="ruby-identifier">br</span>;
19
+ <span class="ruby-keyword kw">end</span>
20
+ <span class="ruby-keyword kw">end</span></pre>
21
+ </body>
22
+ </html>
@@ -0,0 +1,51 @@
1
+ <?xml version="1.0" encoding="iso-8859-1"?>
2
+ <!DOCTYPE html
3
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
+
6
+ <html>
7
+ <head>
8
+ <title>landing (CampingABingoTest::Views)</title>
9
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
+ <link rel="stylesheet" href="../../.././rdoc-style.css" type="text/css" media="screen" />
11
+ </head>
12
+ <body class="standalone-code">
13
+ <pre><span class="ruby-comment cmt"># File examples/camping-abingo-test/camping-abingo-test.rb, line 430</span>
14
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">landing</span>
15
+ <span class="ruby-identifier">div</span>.<span class="ruby-identifier">xyz</span> <span class="ruby-keyword kw">do</span>
16
+ <span class="ruby-identifier">h1</span> <span class="ruby-value str">'XYZ SAAS Application'</span>
17
+
18
+ <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">ab_test</span>(<span class="ruby-value str">&quot;special_promo&quot;</span>)
19
+ <span class="ruby-identifier">div</span>.<span class="ruby-identifier">special_promo!</span> <span class="ruby-keyword kw">do</span>
20
+ <span class="ruby-identifier">div</span> <span class="ruby-value str">&quot;Special offer for today only&quot;</span>
21
+ <span class="ruby-identifier">a</span> <span class="ruby-value str">&quot;Sign-Up Now and get a month free!&quot;</span>, <span class="ruby-identifier">:href=</span><span class="ruby-operator">&gt;</span><span class="ruby-value str">&quot;/signup?special_promo=1&quot;</span>
22
+ <span class="ruby-keyword kw">end</span>
23
+ <span class="ruby-keyword kw">else</span>
24
+ <span class="ruby-identifier">div</span>.<span class="ruby-identifier">abingo_explain</span> <span class="ruby-value str">&quot;The special promo was not selected for this user&quot;</span>
25
+ <span class="ruby-keyword kw">end</span>
26
+
27
+ <span class="ruby-identifier">div</span>.<span class="ruby-identifier">marketing!</span> <span class="ruby-keyword kw">do</span>
28
+ <span class="ruby-identifier">div</span>.<span class="ruby-identifier">benefits!</span> <span class="ruby-keyword kw">do</span>
29
+ <span class="ruby-identifier">ul</span> <span class="ruby-keyword kw">do</span>
30
+ <span class="ruby-identifier">li</span> <span class="ruby-value str">&quot;Save XYZ time in half&quot;</span>
31
+ <span class="ruby-identifier">li</span> <span class="ruby-value str">&quot;Reduce XYZ cost by 25%&quot;</span>
32
+ <span class="ruby-identifier">li</span> <span class="ruby-value str">&quot;Improve quality&quot;</span>
33
+ <span class="ruby-keyword kw">end</span>
34
+ <span class="ruby-keyword kw">end</span>
35
+
36
+ <span class="ruby-identifier">div</span>.<span class="ruby-identifier">actnow!</span> <span class="ruby-keyword kw">do</span>
37
+ <span class="ruby-identifier">signup_text</span> = <span class="ruby-identifier">ab_test</span>(<span class="ruby-value str">&quot;call_to_action&quot;</span>,
38
+ [ <span class="ruby-value str">&quot;Sign-Up Now!&quot;</span>,
39
+ <span class="ruby-value str">&quot;Try It For Free Now!&quot;</span>,
40
+ <span class="ruby-value str">&quot;Start Your Free Trial Now!&quot;</span>,
41
+ ])
42
+
43
+ <span class="ruby-identifier">a</span> <span class="ruby-identifier">:href=</span><span class="ruby-operator">&gt;</span><span class="ruby-value str">&quot;/signup&quot;</span> <span class="ruby-keyword kw">do</span>
44
+ <span class="ruby-identifier">div</span>.<span class="ruby-identifier">signup_btn!</span> <span class="ruby-identifier">signup_text</span>
45
+ <span class="ruby-keyword kw">end</span>
46
+ <span class="ruby-keyword kw">end</span>
47
+ <span class="ruby-keyword kw">end</span>
48
+ <span class="ruby-keyword kw">end</span>
49
+ <span class="ruby-keyword kw">end</span></pre>
50
+ </body>
51
+ </html>
@@ -0,0 +1,31 @@
1
+ <?xml version="1.0" encoding="iso-8859-1"?>
2
+ <!DOCTYPE html
3
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
+
6
+ <html>
7
+ <head>
8
+ <title>signin (CampingABingoTest::Views)</title>
9
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
+ <link rel="stylesheet" href="../../.././rdoc-style.css" type="text/css" media="screen" />
11
+ </head>
12
+ <body class="standalone-code">
13
+ <pre><span class="ruby-comment cmt"># File examples/camping-abingo-test/camping-abingo-test.rb, line 467</span>
14
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">signin</span>
15
+ <span class="ruby-identifier">div</span>.<span class="ruby-identifier">xyz</span> <span class="ruby-keyword kw">do</span>
16
+ <span class="ruby-identifier">h1</span> <span class="ruby-value str">'XYZ SAAS Application Sign-In'</span>
17
+ <span class="ruby-identifier">div</span> <span class="ruby-ivar">@info</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@info</span>
18
+
19
+ <span class="ruby-identifier">form</span> <span class="ruby-identifier">:action</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-constant">R</span>(<span class="ruby-constant">SignIn</span>), <span class="ruby-identifier">:method</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'post'</span> <span class="ruby-keyword kw">do</span>
20
+ <span class="ruby-identifier">label</span> <span class="ruby-value str">'Username'</span>, <span class="ruby-identifier">:for</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'username'</span>; <span class="ruby-identifier">br</span>
21
+ <span class="ruby-identifier">input</span> <span class="ruby-identifier">:name</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'username'</span>, <span class="ruby-identifier">:type</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'text'</span>; <span class="ruby-identifier">br</span>
22
+
23
+ <span class="ruby-identifier">label</span> <span class="ruby-value str">'Password'</span>, <span class="ruby-identifier">:for</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'password'</span>; <span class="ruby-identifier">br</span>
24
+ <span class="ruby-identifier">input</span> <span class="ruby-identifier">:name</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'password'</span>, <span class="ruby-identifier">:type</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'text'</span>; <span class="ruby-identifier">br</span>
25
+
26
+ <span class="ruby-identifier">input</span> <span class="ruby-identifier">:type</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'submit'</span>, <span class="ruby-identifier">:name</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'signin'</span>, <span class="ruby-identifier">:value</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'Sign-In'</span>
27
+ <span class="ruby-keyword kw">end</span>
28
+ <span class="ruby-keyword kw">end</span>
29
+ <span class="ruby-keyword kw">end</span></pre>
30
+ </body>
31
+ </html>
@@ -0,0 +1,31 @@
1
+ <?xml version="1.0" encoding="iso-8859-1"?>
2
+ <!DOCTYPE html
3
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
+
6
+ <html>
7
+ <head>
8
+ <title>signup (CampingABingoTest::Views)</title>
9
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
+ <link rel="stylesheet" href="../../.././rdoc-style.css" type="text/css" media="screen" />
11
+ </head>
12
+ <body class="standalone-code">
13
+ <pre><span class="ruby-comment cmt"># File examples/camping-abingo-test/camping-abingo-test.rb, line 484</span>
14
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">signup</span>
15
+ <span class="ruby-identifier">div</span>.<span class="ruby-identifier">xyz</span> <span class="ruby-keyword kw">do</span>
16
+ <span class="ruby-identifier">h1</span> <span class="ruby-value str">'XYZ SAAS Application Sign-Up'</span>
17
+ <span class="ruby-identifier">div</span> <span class="ruby-ivar">@info</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@info</span>
18
+
19
+ <span class="ruby-identifier">form</span> <span class="ruby-identifier">:action</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-constant">R</span>(<span class="ruby-constant">SignUp</span>), <span class="ruby-identifier">:method</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'post'</span> <span class="ruby-keyword kw">do</span>
20
+ <span class="ruby-identifier">label</span> <span class="ruby-value str">'Username'</span>, <span class="ruby-identifier">:for</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'username'</span>; <span class="ruby-identifier">br</span>
21
+ <span class="ruby-identifier">input</span> <span class="ruby-identifier">:name</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'username'</span>, <span class="ruby-identifier">:type</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'text'</span>; <span class="ruby-identifier">br</span>
22
+
23
+ <span class="ruby-identifier">label</span> <span class="ruby-value str">'Password'</span>, <span class="ruby-identifier">:for</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'password'</span>; <span class="ruby-identifier">br</span>
24
+ <span class="ruby-identifier">input</span> <span class="ruby-identifier">:name</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'password'</span>, <span class="ruby-identifier">:type</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'password'</span>; <span class="ruby-identifier">br</span>;<span class="ruby-identifier">br</span>
25
+
26
+ <span class="ruby-identifier">input</span> <span class="ruby-identifier">:type</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'submit'</span>, <span class="ruby-identifier">:name</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'signup'</span>, <span class="ruby-identifier">:value</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'Sign-Up'</span>
27
+ <span class="ruby-keyword kw">end</span>
28
+ <span class="ruby-keyword kw">end</span>
29
+ <span class="ruby-keyword kw">end</span></pre>
30
+ </body>
31
+ </html>
@@ -0,0 +1,20 @@
1
+ <?xml version="1.0" encoding="iso-8859-1"?>
2
+ <!DOCTYPE html
3
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
+
6
+ <html>
7
+ <head>
8
+ <title>welcome (CampingABingoTest::Views)</title>
9
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
+ <link rel="stylesheet" href="../../.././rdoc-style.css" type="text/css" media="screen" />
11
+ </head>
12
+ <body class="standalone-code">
13
+ <pre><span class="ruby-comment cmt"># File examples/camping-abingo-test/camping-abingo-test.rb, line 501</span>
14
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">welcome</span>
15
+ <span class="ruby-identifier">div</span>.<span class="ruby-identifier">xyz</span> <span class="ruby-keyword kw">do</span>
16
+ <span class="ruby-identifier">h1</span> <span class="ruby-value str">'Welcome'</span>
17
+ <span class="ruby-keyword kw">end</span>
18
+ <span class="ruby-keyword kw">end</span></pre>
19
+ </body>
20
+ </html>
@@ -1 +1 @@
1
- Sun, 28 Nov 2010 11:05:56 -0700
1
+ Mon, 06 Dec 2010 21:38:10 -0700
@@ -56,7 +56,7 @@
56
56
  </tr>
57
57
  <tr class="top-aligned-row">
58
58
  <td><strong>Last Update:</strong></td>
59
- <td>Sat Nov 27 12:34:18 -0700 2010</td>
59
+ <td>Sat Dec 04 19:17:13 -0700 2010</td>
60
60
  </tr>
61
61
  </table>
62
62
  </div>
@@ -56,7 +56,7 @@
56
56
  </tr>
57
57
  <tr class="top-aligned-row">
58
58
  <td><strong>Last Update:</strong></td>
59
- <td>Sun Nov 28 10:58:07 -0700 2010</td>
59
+ <td>Sat Dec 04 15:25:49 -0700 2010</td>
60
60
  </tr>
61
61
  </table>
62
62
  </div>
@@ -150,7 +150,7 @@ plugin.
150
150
  </pre>
151
151
  <p>
152
152
  Now let&#8216;s customize the create method by adding a call to <a
153
- href="../../classes/ABingoCampingPlugin.html#M000036">ABingoCampingPlugin.create</a>,
153
+ href="../../classes/ABingoCampingPlugin.html#M000018">ABingoCampingPlugin.create</a>,
154
154
  so we can give the plugin to run any needed initialization (such as running
155
155
  the ABingo-specific ActiveRecord migration).
156
156
  </p>
@@ -399,8 +399,7 @@ corresponding link in the far right column.
399
399
  <h3>Examples Source Code</h3>
400
400
  <p>
401
401
  Under the examples/camping-abingo-test you will find the full source for
402
- the <a href="../../classes/CampingABingoTest.html">CampingABingoTest</a>
403
- app.
402
+ the CampingABingoTest app.
404
403
  </p>
405
404
  <h1>More information</h1>
406
405
  <p>
@@ -20,16 +20,6 @@
20
20
  <div id="index">
21
21
  <h1 class="section-bar">Classes</h1>
22
22
  <div id="index-entries">
23
- <a href="classes/ABingoCampingPlugin.html">ABingoCampingPlugin</a><br />
24
- <a href="classes/ABingoCampingPlugin/ABingo.html">ABingoCampingPlugin::ABingo</a><br />
25
- <a href="classes/ABingoCampingPlugin/Controllers.html">ABingoCampingPlugin::Controllers</a><br />
26
- <a href="classes/ABingoCampingPlugin/Filters.html">ABingoCampingPlugin::Filters</a><br />
27
- <a href="classes/ABingoCampingPlugin/Helpers.html">ABingoCampingPlugin::Helpers</a><br />
28
- <a href="classes/ABingoCampingPlugin/Models.html">ABingoCampingPlugin::Models</a><br />
29
- <a href="classes/ABingoCampingPlugin/Models/Alternative.html">ABingoCampingPlugin::Models::Alternative</a><br />
30
- <a href="classes/ABingoCampingPlugin/Models/Experiment.html">ABingoCampingPlugin::Models::Experiment</a><br />
31
- <a href="classes/ABingoCampingPlugin/Views.html">ABingoCampingPlugin::Views</a><br />
32
- <a href="classes/Abingo.html">Abingo</a><br />
33
23
  <a href="classes/ActiveSupport.html">ActiveSupport</a><br />
34
24
  <a href="classes/ActiveSupport/Cache.html">ActiveSupport::Cache</a><br />
35
25
  <a href="classes/ActiveSupport/Cache/MemoryStore.html">ActiveSupport::Cache::MemoryStore</a><br />
@@ -21,7 +21,6 @@
21
21
  <h1 class="section-bar">Files</h1>
22
22
  <div id="index-entries">
23
23
  <a href="files/examples/camping-abingo-test/camping-abingo-test_rb.html">examples/camping-abingo-test/camping-abingo-test.rb</a><br />
24
- <a href="files/lib/camping-abingo_rb.html">lib/camping-abingo.rb</a><br />
25
24
  </div>
26
25
  </div>
27
26
  </body>
@@ -20,76 +20,24 @@
20
20
  <div id="index">
21
21
  <h1 class="section-bar">Methods</h1>
22
22
  <div id="index-entries">
23
- <a href="classes/ABingoCampingPlugin/Helpers.html#M000050">ab_test (ABingoCampingPlugin::Helpers)</a><br />
24
- <a href="classes/ABingoCampingPlugin/Helpers.html#M000054">abingo_administrator_user_id (ABingoCampingPlugin::Helpers)</a><br />
25
- <a href="classes/ABingoCampingPlugin/Views.html#M000037">abingo_view_helpers (ABingoCampingPlugin::Views)</a><br />
26
- <a href="classes/ABingoCampingPlugin/Models/Experiment.html#M000068">alternatives_for_test (ABingoCampingPlugin::Models::Experiment)</a><br />
27
- <a href="classes/ABingoCampingPlugin/Helpers.html#M000043">app_module (ABingoCampingPlugin::Helpers)</a><br />
28
- <a href="classes/ABingoCampingPlugin/Helpers.html#M000053">authenticate_abingo_administrator (ABingoCampingPlugin::Helpers)</a><br />
29
- <a href="classes/ABingoCampingPlugin/Models/Experiment.html#M000063">before_destroy (ABingoCampingPlugin::Models::Experiment)</a><br />
30
- <a href="classes/ABingoCampingPlugin/Models/Experiment.html#M000066">best_alternative (ABingoCampingPlugin::Models::Experiment)</a><br />
31
- <a href="classes/ABingoCampingPlugin/Helpers.html#M000051">bingo! (ABingoCampingPlugin::Helpers)</a><br />
32
- <a href="classes/Abingo.html#M000006">bingo! (Abingo)</a><br />
33
- <a href="classes/Abingo.html#M000001">cache (Abingo)</a><br />
34
- <a href="classes/ABingoCampingPlugin/Models/Experiment.html#M000062">cache_keys (ABingoCampingPlugin::Models::Experiment)</a><br />
35
- <a href="classes/ABingoCampingPlugin/Models/Alternative.html#M000059">calculate_lookup (ABingoCampingPlugin::Models::Alternative)</a><br />
36
- <a href="classes/ABingoCampingPlugin/Controllers.html#M000040">common_abingo_controllers (ABingoCampingPlugin::Controllers)</a><br />
37
- <a href="classes/ABingoCampingPlugin/Views.html#M000038">common_abingo_views (ABingoCampingPlugin::Views)</a><br />
38
- <a href="classes/ABingoCampingPlugin/Helpers.html#M000044">conversion_rate (ABingoCampingPlugin::Helpers)</a><br />
39
- <a href="classes/ABingoCampingPlugin/Models/Experiment.html#M000065">conversions (ABingoCampingPlugin::Models::Experiment)</a><br />
40
- <a href="classes/CampingABingoTest.html#M000017">create (CampingABingoTest)</a><br />
41
- <a href="classes/ABingoCampingPlugin.html#M000036">create (ABingoCampingPlugin)</a><br />
42
- <a href="classes/ActiveSupport/Cache/MemoryStore.html#M000016">data (ActiveSupport::Cache::MemoryStore)</a><br />
43
- <a href="classes/ABingoCampingPlugin/Helpers.html#M000049">describe_result_in_words (ABingoCampingPlugin::Helpers)</a><br />
44
- <a href="classes/ABingoCampingPlugin/Models.html#M000058">down (ABingoCampingPlugin::Models)</a><br />
45
- <a href="classes/CampingABingoTest/Models/CreateUserSchema.html#M000033">down (CampingABingoTest::Models::CreateUserSchema)</a><br />
46
- <a href="classes/ABingoCampingPlugin/Models/Experiment.html#M000070">end_experiment! (ABingoCampingPlugin::Models::Experiment)</a><br />
47
- <a href="classes/ABingoCampingPlugin/Models/Experiment.html#M000067">exists? (ABingoCampingPlugin::Models::Experiment)</a><br />
48
- <a href="classes/Abingo.html#M000015">expires_in (Abingo)</a><br />
49
- <a href="classes/Abingo.html#M000012">find_alternative_for_user (Abingo)</a><br />
50
- <a href="classes/Abingo.html#M000004">flip (Abingo)</a><br />
51
- <a href="classes/CampingABingoTest/Controllers/Landing.html#M000026">get (CampingABingoTest::Controllers::Landing)</a><br />
52
- <a href="classes/CampingABingoTest/Controllers/SignIn.html#M000030">get (CampingABingoTest::Controllers::SignIn)</a><br />
53
- <a href="classes/CampingABingoTest/Controllers/SignUp.html#M000027">get (CampingABingoTest::Controllers::SignUp)</a><br />
54
- <a href="classes/CampingABingoTest/Controllers/Index.html#M000024">get (CampingABingoTest::Controllers::Index)</a><br />
55
- <a href="classes/CampingABingoTest/Controllers/SignOut.html#M000029">get (CampingABingoTest::Controllers::SignOut)</a><br />
56
- <a href="classes/CampingABingoTest/Controllers/Welcome.html#M000025">get (CampingABingoTest::Controllers::Welcome)</a><br />
57
- <a href="classes/Abingo.html#M000008">human! (Abingo)</a><br />
58
- <a href="classes/Abingo.html#M000003">identity (Abingo)</a><br />
59
- <a href="classes/Abingo.html#M000002">identity= (Abingo)</a><br />
60
- <a href="classes/ABingoCampingPlugin/Controllers.html#M000041">include_abingo_controllers (ABingoCampingPlugin::Controllers)</a><br />
61
- <a href="classes/ABingoCampingPlugin/Views.html#M000039">include_abingo_views (ABingoCampingPlugin::Views)</a><br />
62
- <a href="classes/ABingoCampingPlugin/Models.html#M000056">included (ABingoCampingPlugin::Models)</a><br />
63
- <a href="classes/ABingoCampingPlugin/Filters.html#M000055">included (ABingoCampingPlugin::Filters)</a><br />
64
- <a href="classes/CampingABingoTest/Views.html#M000019">index (CampingABingoTest::Views)</a><br />
65
- <a href="classes/Abingo.html#M000009">is_human? (Abingo)</a><br />
66
- <a href="classes/ABingoCampingPlugin/Helpers.html#M000048">is_statistically_significant? (ABingoCampingPlugin::Helpers)</a><br />
67
- <a href="classes/CampingABingoTest/Views.html#M000020">landing (CampingABingoTest::Views)</a><br />
68
- <a href="classes/CampingABingoTest/Views.html#M000018">layout (CampingABingoTest::Views)</a><br />
69
- <a href="classes/ABingoCampingPlugin/Helpers.html#M000042">log_debug (ABingoCampingPlugin::Helpers)</a><br />
70
- <a href="classes/ABingoCampingPlugin.html#M000034">logger (ABingoCampingPlugin)</a><br />
71
- <a href="classes/ABingoCampingPlugin.html#M000035">logger= (ABingoCampingPlugin)</a><br />
72
- <a href="classes/Abingo.html#M000013">modulo_choice (Abingo)</a><br />
73
- <a href="classes/ABingoCampingPlugin/Helpers.html#M000047">p_value (ABingoCampingPlugin::Helpers)</a><br />
74
- <a href="classes/Abingo.html#M000010">parse_alternatives (Abingo)</a><br />
75
- <a href="classes/ABingoCampingPlugin/Models/Experiment.html#M000064">participants (ABingoCampingPlugin::Models::Experiment)</a><br />
76
- <a href="classes/Abingo.html#M000007">participating_tests (Abingo)</a><br />
77
- <a href="classes/CampingABingoTest/Controllers/SignIn.html#M000031">post (CampingABingoTest::Controllers::SignIn)</a><br />
78
- <a href="classes/CampingABingoTest/Controllers/SignUp.html#M000028">post (CampingABingoTest::Controllers::SignUp)</a><br />
79
- <a href="classes/ABingoCampingPlugin/Helpers.html#M000045">pretty_conversion_rate (ABingoCampingPlugin::Helpers)</a><br />
80
- <a href="classes/Abingo.html#M000011">retrieve_alternatives (Abingo)</a><br />
81
- <a href="classes/ABingoCampingPlugin/Models/Alternative.html#M000060">score_conversion (ABingoCampingPlugin::Models::Alternative)</a><br />
82
- <a href="classes/Abingo.html#M000014">score_conversion! (Abingo)</a><br />
83
- <a href="classes/ABingoCampingPlugin/Models/Alternative.html#M000061">score_participation (ABingoCampingPlugin::Models::Alternative)</a><br />
84
- <a href="classes/ABingoCampingPlugin/Helpers.html#M000052">set_abingo_identity (ABingoCampingPlugin::Helpers)</a><br />
85
- <a href="classes/CampingABingoTest/Views.html#M000021">signin (CampingABingoTest::Views)</a><br />
86
- <a href="classes/CampingABingoTest/Views.html#M000022">signup (CampingABingoTest::Views)</a><br />
87
- <a href="classes/ABingoCampingPlugin/Models/Experiment.html#M000069">start_experiment! (ABingoCampingPlugin::Models::Experiment)</a><br />
88
- <a href="classes/Abingo.html#M000005">test (Abingo)</a><br />
89
- <a href="classes/ABingoCampingPlugin/Models.html#M000057">up (ABingoCampingPlugin::Models)</a><br />
90
- <a href="classes/CampingABingoTest/Models/CreateUserSchema.html#M000032">up (CampingABingoTest::Models::CreateUserSchema)</a><br />
91
- <a href="classes/CampingABingoTest/Views.html#M000023">welcome (CampingABingoTest::Views)</a><br />
92
- <a href="classes/ABingoCampingPlugin/Helpers.html#M000046">zscore (ABingoCampingPlugin::Helpers)</a><br />
23
+ <a href="classes/CampingABingoTest.html#M000002">create (CampingABingoTest)</a><br />
24
+ <a href="classes/ActiveSupport/Cache/MemoryStore.html#M000001">data (ActiveSupport::Cache::MemoryStore)</a><br />
25
+ <a href="classes/CampingABingoTest/Models/CreateUserSchema.html#M000018">down (CampingABingoTest::Models::CreateUserSchema)</a><br />
26
+ <a href="classes/CampingABingoTest/Controllers/Welcome.html#M000010">get (CampingABingoTest::Controllers::Welcome)</a><br />
27
+ <a href="classes/CampingABingoTest/Controllers/SignIn.html#M000015">get (CampingABingoTest::Controllers::SignIn)</a><br />
28
+ <a href="classes/CampingABingoTest/Controllers/SignOut.html#M000014">get (CampingABingoTest::Controllers::SignOut)</a><br />
29
+ <a href="classes/CampingABingoTest/Controllers/SignUp.html#M000012">get (CampingABingoTest::Controllers::SignUp)</a><br />
30
+ <a href="classes/CampingABingoTest/Controllers/Index.html#M000009">get (CampingABingoTest::Controllers::Index)</a><br />
31
+ <a href="classes/CampingABingoTest/Controllers/Landing.html#M000011">get (CampingABingoTest::Controllers::Landing)</a><br />
32
+ <a href="classes/CampingABingoTest/Views.html#M000004">index (CampingABingoTest::Views)</a><br />
33
+ <a href="classes/CampingABingoTest/Views.html#M000005">landing (CampingABingoTest::Views)</a><br />
34
+ <a href="classes/CampingABingoTest/Views.html#M000003">layout (CampingABingoTest::Views)</a><br />
35
+ <a href="classes/CampingABingoTest/Controllers/SignUp.html#M000013">post (CampingABingoTest::Controllers::SignUp)</a><br />
36
+ <a href="classes/CampingABingoTest/Controllers/SignIn.html#M000016">post (CampingABingoTest::Controllers::SignIn)</a><br />
37
+ <a href="classes/CampingABingoTest/Views.html#M000006">signin (CampingABingoTest::Views)</a><br />
38
+ <a href="classes/CampingABingoTest/Views.html#M000007">signup (CampingABingoTest::Views)</a><br />
39
+ <a href="classes/CampingABingoTest/Models/CreateUserSchema.html#M000017">up (CampingABingoTest::Models::CreateUserSchema)</a><br />
40
+ <a href="classes/CampingABingoTest/Views.html#M000008">welcome (CampingABingoTest::Views)</a><br />
93
41
  </div>
94
42
  </div>
95
43
  </body>
@@ -0,0 +1,456 @@
1
+ # NOTE: This sample is a basic skeletonfor the CampingABingoTest web app
2
+ # which does NOT yet contain any integration with ABingo.
3
+ #
4
+ # You can use this as a starting point to follow along the instructions to add
5
+ # ABingo support based on the blog post series: http://blog.monnet-usa.com/?p=322
6
+ #
7
+ gem 'camping' , '>= 2.0'
8
+ gem 'filtering_camping' , '>= 1.0'
9
+
10
+ %w(rubygems active_record erb fileutils json markaby md5 redcloth
11
+ camping camping/session filtering_camping
12
+ ).each { |lib| require lib }
13
+
14
+ Camping.goes :CampingABingoTest
15
+
16
+ module CampingABingoTest
17
+ include Camping::Session
18
+ include CampingFilters
19
+
20
+ app_logger = Logger.new(File.dirname(__FILE__) + '/camping-abingo-test.log')
21
+ app_logger.level = Logger::DEBUG
22
+ Camping::Models::Base.logger = app_logger
23
+
24
+ def CampingABingoTest.create
25
+ dbconfig = YAML.load(File.read('config/database.yml'))
26
+ Camping::Models::Base.establish_connection dbconfig['development']
27
+
28
+ CampingABingoTest::Models.create_schema :assume => (CampingABingoTest::Models::User.table_exists? ? 1.1 : 0.0)
29
+ end
30
+ end
31
+
32
+ module CampingABingoTest::Models
33
+ class User < Base;
34
+ end
35
+
36
+ class CreateUserSchema < V 1.0
37
+ def self.up
38
+ create_table :CampingABingoTest_users, :force => true do |t|
39
+ t.integer :id, :null => false
40
+ t.string :username
41
+ t.string :password
42
+ end
43
+
44
+ User.create :username => 'admin', :password => 'camping'
45
+ end
46
+
47
+ def self.down
48
+ drop_table :CampingABingoTest_users
49
+ end
50
+ end
51
+
52
+ end
53
+
54
+ module CampingABingoTest::Helpers
55
+ end
56
+
57
+ module CampingABingoTest::Controllers
58
+ class Index
59
+ def get
60
+ render :index
61
+ end
62
+ end
63
+
64
+ class Landing < R '/landing'
65
+ def get
66
+ render :landing
67
+ end
68
+ end
69
+
70
+ class SignIn < R '/signin'
71
+ def get
72
+ render :signin
73
+ end
74
+
75
+ def post
76
+ @user = User.find_by_username_and_password(input.username, input.password)
77
+
78
+ if @user
79
+ @state.user_id = @user.id
80
+
81
+ if @state.return_to.nil?
82
+ redirect R(Welcome)
83
+ else
84
+ return_to = @state.return_to
85
+ @state.return_to = nil
86
+ redirect(return_to)
87
+ end
88
+ else
89
+ @info = 'Wrong username or password.'
90
+ end
91
+
92
+ render :signin
93
+ end
94
+ end
95
+
96
+ class SignOut < R '/signout'
97
+ def get
98
+ @state.user_id = nil
99
+
100
+ render :index
101
+ end
102
+ end
103
+
104
+ class SignUp < R '/signup'
105
+ def get
106
+ render :signup
107
+ end
108
+
109
+ def post
110
+ @user = User.find_by_username(input.username)
111
+ if @user
112
+ @info = 'A user account already exist for this username.'
113
+ else
114
+ @user = User.new :username => input.username,
115
+ :password => input.password
116
+ @user.save
117
+ if @user
118
+ @state.user_id = @user.id
119
+ redirect R(Welcome)
120
+ else
121
+ @info = @user.errors.full_messages unless @user.errors.empty?
122
+ end
123
+ end
124
+ render :signup
125
+ end
126
+ end
127
+
128
+ class Welcome < R '/welcome'
129
+ def get
130
+ render :welcome
131
+ end
132
+ end
133
+
134
+ end #Controllers
135
+
136
+ module CampingABingoTest::Views
137
+ def layout
138
+ html do
139
+
140
+ head do
141
+ title "Ruby Camping ABingo Plugin Demo"
142
+
143
+ style :type => 'text/css' do
144
+ <<-STYLE
145
+
146
+ /* --- General Test App Styles --- */
147
+
148
+ body {
149
+ padding:0 0 0 0;
150
+ margin:5px;
151
+ font-family:'Lucida Grande','Lucida Sans Unicode',sans-serif;
152
+ font-size: 0.8em;
153
+ color:#303030;
154
+ background-color: #fbf9b5;
155
+ }
156
+
157
+ a {
158
+ color:#303030;
159
+ text-decoration:none;
160
+ border-bottom:1px dotted #505050;
161
+ }
162
+
163
+ a:hover {
164
+ color:#303030;
165
+ background: yellow;
166
+ text-decoration:none;
167
+ border-bottom:4px solid orange;
168
+ }
169
+
170
+ h1 {
171
+ font-size: 14px;
172
+ color: #cc3300;
173
+ }
174
+
175
+ table {
176
+ font-size:0.9em;
177
+ width: 1050px;
178
+ }
179
+
180
+ tr
181
+ {
182
+ background:lightgoldenRodYellow;
183
+ vertical-align:top;
184
+ }
185
+
186
+ th
187
+ {
188
+ font-size: 0.9em;
189
+ font-weight:bold;
190
+ background:lightBlue none repeat scroll 0 0;
191
+
192
+ text-align:left;
193
+ }
194
+
195
+ #header
196
+ {
197
+ width: 100%;
198
+ height: 30px;
199
+ border-bottom: 4px solid #ccc;
200
+ }
201
+
202
+ #header_title
203
+ {
204
+ float: left;
205
+ }
206
+
207
+ #top_nav
208
+ {
209
+ float: right;
210
+ }
211
+
212
+ #footer
213
+ {
214
+ width: 100%;
215
+ border-top: 4px solid #ccc;
216
+ }
217
+
218
+
219
+ #footer_notices
220
+ {
221
+ width: 100%;
222
+ border-top: 4px solid #ccc;
223
+ }
224
+
225
+ #home
226
+ {
227
+ background-color: #C9E3F5;
228
+ padding: 10px;
229
+ height: 300px;
230
+ }
231
+
232
+ #debug_panel
233
+ {
234
+ background-color: wheat;
235
+ padding: 10px;
236
+ }
237
+
238
+ .xyz
239
+ {
240
+ background-color: #D1F2A5;
241
+ padding: 10px;
242
+ height: 300px;
243
+ }
244
+
245
+ .xyz h1
246
+ {
247
+ color: #9D9F89;
248
+ }
249
+
250
+ #special_promo
251
+ {
252
+ margin: 20px;
253
+ }
254
+
255
+ #landing a:hover
256
+ {
257
+ background-color: #B2DE93;
258
+ border-bottom-color:green;
259
+ }
260
+
261
+ #marketing
262
+ {
263
+ width: 480px;
264
+ height: 100px;
265
+ margin: 20px;
266
+ }
267
+
268
+ #benefits
269
+ {
270
+ float: left;
271
+ width: 300px;
272
+ height: 100px;
273
+ font-size: 1.3em;
274
+ font-weight: bold;
275
+ color: green;
276
+ background-color: #B2DE93;
277
+ }
278
+
279
+ #actnow
280
+ {
281
+ float: right;
282
+ width: 180px;
283
+ height: 100px;
284
+ text-align: center;
285
+ background-color: #8BC59B;
286
+ }
287
+
288
+ #signup_btn
289
+ {
290
+ background-color:#91F1A0;
291
+ border:4px solid green;
292
+ font-size:1.5em;
293
+ font-weight:bold;
294
+ height:72px;
295
+ margin: 10px 20px 10px 22px;
296
+ width:130px;
297
+ }
298
+
299
+ #actnow a:hover #signup_btn
300
+ {
301
+ background-color: #69F17F;
302
+ color: #007300;
303
+ border: 4px solid #00AA00;
304
+ }
305
+
306
+ /* --- ABingo Dashboard Styles ---*/
307
+
308
+ #abingo_dashboard
309
+ {
310
+ background-color: white;
311
+ padding: 10px;
312
+ }
313
+
314
+ abingo_experiment_table
315
+ {
316
+ width: 100%;
317
+ }
318
+
319
+ .abingo_experiment_row
320
+ {
321
+ }
322
+
323
+ .abingo_alternative_row
324
+ {
325
+ color: red;
326
+ font-weight: bold;
327
+ }
328
+
329
+ .abingo_debug
330
+ {
331
+ display: block;
332
+ width: 100%;
333
+ }
334
+
335
+ .abingo_explain
336
+ {
337
+ color: #CCC;
338
+ font-style:italics;
339
+ }
340
+
341
+
342
+ STYLE
343
+ end
344
+ end #head
345
+
346
+ body do
347
+ div.header! do
348
+ div.header_title! "Ruby Camping ABingo Plugin Demo"
349
+ div.top_nav! do
350
+ a "Home", :href=>"/"
351
+ span " | "
352
+ if @state.nil? || @state.user_id.nil?
353
+ a "Sign-In", :href=>'/signin'
354
+ span " | "
355
+ a "Sign-Up", :href=>'/signup'
356
+ else
357
+ a "XYZ", :href=>"/welcome"
358
+ span " | "
359
+ a "Sign-Out", :href=>'/signout'
360
+ end
361
+ end
362
+ end
363
+
364
+ self << yield
365
+
366
+ div.footer! do
367
+ div.debug_panel! do
368
+ h4 "Debugging Information:"
369
+ h5 "State:"
370
+ div "#{@state.inspect}"
371
+ end
372
+
373
+ div.footer_notices! { "Copyright &copy; 2010 &nbsp; - #{ a('Patrick McKenzie', :href => 'http://www.bingocardcreator.com/abingo') } and #{ a('Philippe Monnet', :href => 'http://blog.monnet-usa.com/') } " }
374
+ end
375
+ end
376
+
377
+ end
378
+ end
379
+
380
+
381
+ def index
382
+ div.home! do
383
+ h1 'My CampingABingoTest App'
384
+
385
+ a "XYZ SAAS Application Landing page variations", :href=>"/landing"; br;
386
+ end
387
+ end
388
+
389
+ def landing
390
+ div.xyz do
391
+ h1 'XYZ SAAS Application'
392
+
393
+ div.marketing! do
394
+ div.benefits! do
395
+ ul do
396
+ li "Save XYZ time in half"
397
+ li "Reduce XYZ cost by 25%"
398
+ li "Improve quality"
399
+ end
400
+ end
401
+
402
+ div.actnow! do
403
+ signup_text = "Sign-Up Now!"
404
+
405
+ a :href=>"/signup" do
406
+ div.signup_btn! signup_text
407
+ end
408
+ end
409
+ end
410
+ end
411
+ end
412
+
413
+ def signin
414
+ div.xyz do
415
+ h1 'XYZ SAAS Application Sign-In'
416
+ div @info if @info
417
+
418
+ form :action => R(SignIn), :method => 'post' do
419
+ label 'Username', :for => 'username'; br
420
+ input :name => 'username', :type => 'text'; br
421
+
422
+ label 'Password', :for => 'password'; br
423
+ input :name => 'password', :type => 'text'; br
424
+
425
+ input :type => 'submit', :name => 'signin', :value => 'Sign-In'
426
+ end
427
+ end
428
+ end
429
+
430
+ def signup
431
+ div.xyz do
432
+ h1 'XYZ SAAS Application Sign-Up'
433
+ div @info if @info
434
+
435
+ form :action => R(SignUp), :method => 'post' do
436
+ label 'Username', :for => 'username'; br
437
+ input :name => 'username', :type => 'text'; br
438
+
439
+ label 'Password', :for => 'password'; br
440
+ input :name => 'password', :type => 'password'; br;br
441
+
442
+ input :type => 'submit', :name => 'signup', :value => 'Sign-Up'
443
+ end
444
+ end
445
+ end
446
+
447
+ def welcome
448
+ div.xyz do
449
+ h1 'Welcome'
450
+ end
451
+ end
452
+
453
+ end
454
+
455
+ CampingABingoTest.create
456
+