RubyApp 0.0.6

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 (218) hide show
  1. data/.gitignore +13 -0
  2. data/.rvmrc +1 -0
  3. data/Gemfile +4 -0
  4. data/README.md +0 -0
  5. data/bin/console.rb +8 -0
  6. data/bin/ruby_app +168 -0
  7. data/features/breadcrumbs.feature +11 -0
  8. data/features/content.feature +16 -0
  9. data/features/default.feature +5 -0
  10. data/features/dialog.feature +56 -0
  11. data/features/exception.feature +53 -0
  12. data/features/input.feature +13 -0
  13. data/features/list.feature +12 -0
  14. data/features/month.feature +14 -0
  15. data/features/step_definitions/default_macros.rb +16 -0
  16. data/features/step_definitions/default_steps.rb +36 -0
  17. data/features/support/env.rb +12 -0
  18. data/lib/ruby_app.rb +1 -0
  19. data/lib/ruby_app/application.rb +72 -0
  20. data/lib/ruby_app/config.ru +27 -0
  21. data/lib/ruby_app/config.yml +15 -0
  22. data/lib/ruby_app/configuration.rb +44 -0
  23. data/lib/ruby_app/element.rb +120 -0
  24. data/lib/ruby_app/elements/base/base_dialog.css.haml +9 -0
  25. data/lib/ruby_app/elements/base/base_dialog.html.haml +4 -0
  26. data/lib/ruby_app/elements/base/base_dialog.rb +64 -0
  27. data/lib/ruby_app/elements/base/base_page.css.haml +13 -0
  28. data/lib/ruby_app/elements/base/base_page.html.haml +20 -0
  29. data/lib/ruby_app/elements/base/base_page.js.haml +97 -0
  30. data/lib/ruby_app/elements/base/base_page.rb +80 -0
  31. data/lib/ruby_app/elements/button.html.haml +4 -0
  32. data/lib/ruby_app/elements/button.rb +19 -0
  33. data/lib/ruby_app/elements/calendars/base/base_month.css.haml +10 -0
  34. data/lib/ruby_app/elements/calendars/base/base_month.html.haml +42 -0
  35. data/lib/ruby_app/elements/calendars/base/base_month.js.haml +18 -0
  36. data/lib/ruby_app/elements/calendars/base/base_month.rb +101 -0
  37. data/lib/ruby_app/elements/calendars/month.rb +27 -0
  38. data/lib/ruby_app/elements/click.js.haml +10 -0
  39. data/lib/ruby_app/elements/click.rb +44 -0
  40. data/lib/ruby_app/elements/dialog.rb +23 -0
  41. data/lib/ruby_app/elements/dialogs/base/base_busy_dialog.css.haml +9 -0
  42. data/lib/ruby_app/elements/dialogs/base/base_busy_dialog.html.haml +7 -0
  43. data/lib/ruby_app/elements/dialogs/base/base_busy_dialog.rb +27 -0
  44. data/lib/ruby_app/elements/dialogs/base/base_close_dialog.css.haml +11 -0
  45. data/lib/ruby_app/elements/dialogs/base/base_close_dialog.html.haml +6 -0
  46. data/lib/ruby_app/elements/dialogs/base/base_close_dialog.js.haml +2 -0
  47. data/lib/ruby_app/elements/dialogs/base/base_close_dialog.rb +33 -0
  48. data/lib/ruby_app/elements/dialogs/base/base_yes_no_dialog.css.haml +15 -0
  49. data/lib/ruby_app/elements/dialogs/base/base_yes_no_dialog.html.haml +8 -0
  50. data/lib/ruby_app/elements/dialogs/base/base_yes_no_dialog.js.haml +2 -0
  51. data/lib/ruby_app/elements/dialogs/base/base_yes_no_dialog.rb +40 -0
  52. data/lib/ruby_app/elements/dialogs/blank_dialog.html.haml +9 -0
  53. data/lib/ruby_app/elements/dialogs/blank_dialog.rb +22 -0
  54. data/lib/ruby_app/elements/dialogs/busy_dialog.rb +22 -0
  55. data/lib/ruby_app/elements/dialogs/calendars/month_dialog.css.haml +19 -0
  56. data/lib/ruby_app/elements/dialogs/calendars/month_dialog.html.haml +18 -0
  57. data/lib/ruby_app/elements/dialogs/calendars/month_dialog.js.haml +3 -0
  58. data/lib/ruby_app/elements/dialogs/calendars/month_dialog.rb +52 -0
  59. data/lib/ruby_app/elements/dialogs/close_dialog.rb +22 -0
  60. data/lib/ruby_app/elements/dialogs/confirmation_dialog.html.haml +8 -0
  61. data/lib/ruby_app/elements/dialogs/confirmation_dialog.rb +26 -0
  62. data/lib/ruby_app/elements/dialogs/exception_dialog.html.haml +8 -0
  63. data/lib/ruby_app/elements/dialogs/exception_dialog.rb +23 -0
  64. data/lib/ruby_app/elements/dialogs/message_dialog.html.haml +8 -0
  65. data/lib/ruby_app/elements/dialogs/message_dialog.rb +26 -0
  66. data/lib/ruby_app/elements/dialogs/yes_no_dialog.rb +22 -0
  67. data/lib/ruby_app/elements/exception_element.html.haml +7 -0
  68. data/lib/ruby_app/elements/exception_element.rb +19 -0
  69. data/lib/ruby_app/elements/input.html.haml +3 -0
  70. data/lib/ruby_app/elements/input.js.haml +9 -0
  71. data/lib/ruby_app/elements/input.rb +54 -0
  72. data/lib/ruby_app/elements/inputs/duration_input.rb +46 -0
  73. data/lib/ruby_app/elements/link.html.haml +4 -0
  74. data/lib/ruby_app/elements/link.rb +19 -0
  75. data/lib/ruby_app/elements/list.html.haml +9 -0
  76. data/lib/ruby_app/elements/list.js.haml +10 -0
  77. data/lib/ruby_app/elements/list.rb +55 -0
  78. data/lib/ruby_app/elements/lists/select.html.haml +14 -0
  79. data/lib/ruby_app/elements/lists/select.js.haml +10 -0
  80. data/lib/ruby_app/elements/lists/select.rb +47 -0
  81. data/lib/ruby_app/elements/markdown.html.haml +5 -0
  82. data/lib/ruby_app/elements/markdown.js.haml +10 -0
  83. data/lib/ruby_app/elements/markdown.rb +51 -0
  84. data/lib/ruby_app/elements/navigation/back_button.html.haml +2 -0
  85. data/lib/ruby_app/elements/navigation/back_button.rb +29 -0
  86. data/lib/ruby_app/elements/navigation/base/base_breadcrumbs.html.haml +17 -0
  87. data/lib/ruby_app/elements/navigation/base/base_breadcrumbs.js.haml +10 -0
  88. data/lib/ruby_app/elements/navigation/base/base_breadcrumbs.rb +58 -0
  89. data/lib/ruby_app/elements/navigation/breadcrumbs.rb +22 -0
  90. data/lib/ruby_app/elements/navigation/page_link.html.haml +9 -0
  91. data/lib/ruby_app/elements/navigation/page_link.js.haml +10 -0
  92. data/lib/ruby_app/elements/navigation/page_link.rb +56 -0
  93. data/lib/ruby_app/elements/navigation/page_menu.html.haml +12 -0
  94. data/lib/ruby_app/elements/navigation/page_menu.js.haml +10 -0
  95. data/lib/ruby_app/elements/navigation/page_menu.rb +57 -0
  96. data/lib/ruby_app/elements/page.rb +21 -0
  97. data/lib/ruby_app/elements/pages/authentication/open_id/authentication_page.css.haml +2 -0
  98. data/lib/ruby_app/elements/pages/authentication/open_id/authentication_page.js.haml +2 -0
  99. data/lib/ruby_app/elements/pages/authentication/open_id/authentication_page.rb +77 -0
  100. data/lib/ruby_app/elements/pages/authentication/open_id/ax_authentication_page.rb +52 -0
  101. data/lib/ruby_app/elements/pages/authentication/open_id/google_authentication_page.rb +30 -0
  102. data/lib/ruby_app/elements/pages/authentication/open_id/my_open_id_authentication_page.rb +30 -0
  103. data/lib/ruby_app/elements/pages/authentication/open_id/sreg_authentication_page.rb +52 -0
  104. data/lib/ruby_app/elements/pages/authentication/open_id/yahoo_authentication_page.rb +30 -0
  105. data/lib/ruby_app/elements/pages/base/base_blank_page.css.haml +18 -0
  106. data/lib/ruby_app/elements/pages/base/base_blank_page.html.haml +11 -0
  107. data/lib/ruby_app/elements/pages/base/base_blank_page.js.haml +3 -0
  108. data/lib/ruby_app/elements/pages/base/base_blank_page.rb +36 -0
  109. data/lib/ruby_app/elements/pages/blank_page.rb +22 -0
  110. data/lib/ruby_app/elements/pages/default_page.css.haml +2 -0
  111. data/lib/ruby_app/elements/pages/default_page.html.haml +5 -0
  112. data/lib/ruby_app/elements/pages/default_page.js.haml +2 -0
  113. data/lib/ruby_app/elements/pages/default_page.rb +34 -0
  114. data/lib/ruby_app/elements/pages/exception_page.html.haml +8 -0
  115. data/lib/ruby_app/elements/pages/exception_page.rb +23 -0
  116. data/lib/ruby_app/elements/pages/quit_page.html.haml +5 -0
  117. data/lib/ruby_app/elements/pages/quit_page.rb +24 -0
  118. data/lib/ruby_app/elements/pages/settings_page.css.haml +2 -0
  119. data/lib/ruby_app/elements/pages/settings_page.html.haml +5 -0
  120. data/lib/ruby_app/elements/pages/settings_page.js.haml +2 -0
  121. data/lib/ruby_app/elements/pages/settings_page.rb +37 -0
  122. data/lib/ruby_app/elements/pages/test_pages/default_test_page.css.haml +4 -0
  123. data/lib/ruby_app/elements/pages/test_pages/default_test_page.html.haml +5 -0
  124. data/lib/ruby_app/elements/pages/test_pages/default_test_page.js.haml +4 -0
  125. data/lib/ruby_app/elements/pages/test_pages/default_test_page.rb +55 -0
  126. data/lib/ruby_app/elements/pages/test_pages/dialog_test_page.css.haml +7 -0
  127. data/lib/ruby_app/elements/pages/test_pages/dialog_test_page.html.haml +5 -0
  128. data/lib/ruby_app/elements/pages/test_pages/dialog_test_page.js.haml +7 -0
  129. data/lib/ruby_app/elements/pages/test_pages/dialog_test_page.rb +66 -0
  130. data/lib/ruby_app/elements/pages/test_pages/input_test_page.css.haml +4 -0
  131. data/lib/ruby_app/elements/pages/test_pages/input_test_page.html.haml +9 -0
  132. data/lib/ruby_app/elements/pages/test_pages/input_test_page.js.haml +4 -0
  133. data/lib/ruby_app/elements/pages/test_pages/input_test_page.rb +44 -0
  134. data/lib/ruby_app/elements/pages/test_pages/list_test_page.css.haml +4 -0
  135. data/lib/ruby_app/elements/pages/test_pages/list_test_page.html.haml +6 -0
  136. data/lib/ruby_app/elements/pages/test_pages/list_test_page.js.haml +4 -0
  137. data/lib/ruby_app/elements/pages/test_pages/list_test_page.rb +51 -0
  138. data/lib/ruby_app/language.rb +44 -0
  139. data/lib/ruby_app/log.rb +33 -0
  140. data/lib/ruby_app/mixins/configuration.rb +31 -0
  141. data/lib/ruby_app/mixins/delegate.rb +15 -0
  142. data/lib/ruby_app/mixins/hash.rb +19 -0
  143. data/lib/ruby_app/mixins/render.rb +76 -0
  144. data/lib/ruby_app/mixins/route.rb +39 -0
  145. data/lib/ruby_app/mixins/template.rb +38 -0
  146. data/lib/ruby_app/mixins/translate.rb +35 -0
  147. data/lib/ruby_app/rack/application.rb +24 -0
  148. data/lib/ruby_app/rack/route.rb +128 -0
  149. data/lib/ruby_app/request.rb +54 -0
  150. data/lib/ruby_app/resources/elements/dialogs/base/base_busy_dialog.gif +0 -0
  151. data/lib/ruby_app/resources/favicon.ico +0 -0
  152. data/lib/ruby_app/resources/themes/mobile/base/base_page/icon.png +0 -0
  153. data/lib/ruby_app/resources/themes/mobile/base/base_page/icon.psd +0 -0
  154. data/lib/ruby_app/resources/themes/mobile/base/base_page/manifest +0 -0
  155. data/lib/ruby_app/resources/themes/mobile/base/base_page/start.png +0 -0
  156. data/lib/ruby_app/resources/themes/mobile/base/base_page/start.psd +0 -0
  157. data/lib/ruby_app/resources/themes/mobile/lists/select.png +0 -0
  158. data/lib/ruby_app/resources/themes/mobile/lists/select.psd +0 -0
  159. data/lib/ruby_app/session.rb +101 -0
  160. data/lib/ruby_app/templates/application/Gemfile +3 -0
  161. data/lib/ruby_app/templates/application/config.ru +42 -0
  162. data/lib/ruby_app/templates/application/config.yml +1 -0
  163. data/lib/ruby_app/templates/application/console.rb +16 -0
  164. data/lib/ruby_app/templates/application/lib/_APPLICATION_DOWNCODE_/application.rb +16 -0
  165. data/lib/ruby_app/templates/application/lib/_APPLICATION_DOWNCODE_/elements/pages/default_page.css.haml +9 -0
  166. data/lib/ruby_app/templates/application/lib/_APPLICATION_DOWNCODE_/elements/pages/default_page.html.haml +7 -0
  167. data/lib/ruby_app/templates/application/lib/_APPLICATION_DOWNCODE_/elements/pages/default_page.rb +26 -0
  168. data/lib/ruby_app/templates/application/lib/_APPLICATION_DOWNCODE_/session.rb +17 -0
  169. data/lib/ruby_app/templates/application/lib/_APPLICATION_DOWNCODE_/version.rb +4 -0
  170. data/lib/ruby_app/templates/application/spec/spec_helper.rb +1 -0
  171. data/lib/ruby_app/templates/application/spec/support/shared.rb +18 -0
  172. data/lib/ruby_app/templates/application/translations/en.yml +5 -0
  173. data/lib/ruby_app/templates/page/_PAGE_DOWNCODE_.css.haml +3 -0
  174. data/lib/ruby_app/templates/page/_PAGE_DOWNCODE_.html.haml +4 -0
  175. data/lib/ruby_app/templates/page/_PAGE_DOWNCODE_.js.haml +3 -0
  176. data/lib/ruby_app/templates/page/_PAGE_DOWNCODE_.rb +14 -0
  177. data/lib/ruby_app/themes/mobile.rb +37 -0
  178. data/lib/ruby_app/themes/mobile/base/base_page.html.haml +30 -0
  179. data/lib/ruby_app/themes/mobile/calendars/month.css.haml +21 -0
  180. data/lib/ruby_app/themes/mobile/colors.sass +24 -0
  181. data/lib/ruby_app/themes/mobile/dialog.css.haml +17 -0
  182. data/lib/ruby_app/themes/mobile/dialogs/blank_dialog.css.haml +12 -0
  183. data/lib/ruby_app/themes/mobile/dialogs/busy_dialog.css.haml +9 -0
  184. data/lib/ruby_app/themes/mobile/dialogs/close_dialog.css.haml +12 -0
  185. data/lib/ruby_app/themes/mobile/dialogs/yes_no_dialog.css.haml +14 -0
  186. data/lib/ruby_app/themes/mobile/list.css.haml +25 -0
  187. data/lib/ruby_app/themes/mobile/lists/select.css.haml +27 -0
  188. data/lib/ruby_app/themes/mobile/markdown.css.haml +11 -0
  189. data/lib/ruby_app/themes/mobile/navigation/base/base_breadcrumbs.html.haml +7 -0
  190. data/lib/ruby_app/themes/mobile/page.css.haml +18 -0
  191. data/lib/ruby_app/themes/mobile/pages/base/base_blank_page.css.haml +18 -0
  192. data/lib/ruby_app/themes/mobile/pages/base/base_blank_page.html.haml +13 -0
  193. data/lib/ruby_app/themes/mobile/pages/blank_page.css.haml +19 -0
  194. data/lib/ruby_app/translations/en.yml +125 -0
  195. data/lib/ruby_app/version.rb +4 -0
  196. data/rakefile +62 -0
  197. data/ruby_app.gemspec +40 -0
  198. data/spec/element_spec.rb +22 -0
  199. data/spec/elements/navigation/breadcrumbs_spec.rb +69 -0
  200. data/spec/elements/page_spec.rb +31 -0
  201. data/spec/mixins/render_spec.rb +182 -0
  202. data/spec/mixins/route_spec.rb +60 -0
  203. data/spec/mixins/template_spec.rb +78 -0
  204. data/spec/mixins/test_a.css.haml +3 -0
  205. data/spec/mixins/test_a.html.haml +3 -0
  206. data/spec/mixins/test_a.js.haml +3 -0
  207. data/spec/mixins/test_b.css.haml +4 -0
  208. data/spec/mixins/test_b.html.haml +3 -0
  209. data/spec/mixins/test_b.js.haml +4 -0
  210. data/spec/mixins/test_c.css.haml +4 -0
  211. data/spec/mixins/test_c.html.haml +2 -0
  212. data/spec/mixins/test_c.js.haml +4 -0
  213. data/spec/mixins/test_e.html.haml +2 -0
  214. data/spec/mixins/test_f.html.haml +2 -0
  215. data/spec/mixins/test_g.css.haml +4 -0
  216. data/spec/spec_helper.rb +1 -0
  217. data/spec/support/shared.rb +15 -0
  218. metadata +654 -0
@@ -0,0 +1,22 @@
1
+ module RubyApp
2
+
3
+ module Elements
4
+
5
+ module Navigation
6
+ require 'ruby_app/elements/navigation/base/base_breadcrumbs'
7
+
8
+ class Breadcrumbs < RubyApp::Elements::Navigation::Base::BaseBreadcrumbs
9
+
10
+ template_path(:all, File.dirname(__FILE__))
11
+
12
+ def initialize
13
+ super
14
+ end
15
+
16
+ end
17
+
18
+ end
19
+
20
+ end
21
+
22
+ end
@@ -0,0 +1,9 @@
1
+ /
2
+ #{__FILE__}
3
+ %span.link{attributes}
4
+ - if self.current_page?
5
+ %span.current{:href => '', :page => self.page}
6
+ = self.content_for(self.page) || self.page.translate.title
7
+ - else
8
+ %a.page{:href => '', :page => self.page}
9
+ = self.content_for(self.page) || self.page.translate.title
@@ -0,0 +1,10 @@
1
+ - self.rendered?(__FILE__) do
2
+ :plain
3
+ // #{__FILE__}
4
+ $(document).ready(function() {
5
+ $("span.link a.page").click(function(event) {
6
+ event.preventDefault();
7
+ RubyApp.sendEvent({_class:'RubyApp::Elements::Navigation::PageLink::NavigatedEvent', source_id:$(this).parent().attr('id'), page:$(this).attr('page')});
8
+ });
9
+ });
10
+ = yield
@@ -0,0 +1,56 @@
1
+ module RubyApp
2
+
3
+ module Elements
4
+
5
+ module Navigation
6
+ require 'ruby_app/element'
7
+
8
+ class PageLink < RubyApp::Element
9
+
10
+ class NavigatedEvent < RubyApp::Element::Event
11
+
12
+ attr_reader :page
13
+
14
+ def initialize(data)
15
+ super(data)
16
+ @page = eval(data['page'])
17
+ end
18
+
19
+ def to_hash
20
+ super.merge('page' => @page)
21
+ end
22
+
23
+ end
24
+
25
+ template_path(:all, File.dirname(__FILE__))
26
+
27
+ attr_accessor :page
28
+
29
+ def initialize(page = nil)
30
+ super()
31
+ @page = page
32
+ end
33
+
34
+ def current_page?
35
+ page == RubyApp::Session.pages.last.class
36
+ end
37
+
38
+ protected
39
+
40
+ def on_event(event)
41
+ on_navigated(event) if event.is_a?(RubyApp::Elements::Navigation::PageLink::NavigatedEvent)
42
+ super(event)
43
+ end
44
+
45
+ def on_navigated(event)
46
+ RubyApp::Session.pages.push(event.page.new)
47
+ event.refresh
48
+ end
49
+
50
+ end
51
+
52
+ end
53
+
54
+ end
55
+
56
+ end
@@ -0,0 +1,12 @@
1
+ /
2
+ #{__FILE__}
3
+ %div.menu{attributes}
4
+ - self.pages.each do |page|
5
+ - if page == self.current_page
6
+ %div.current
7
+ %span.current{:page => page}
8
+ = page.translate.title
9
+ - else
10
+ %div.page
11
+ %a.page{:href => '', :page => page}
12
+ = page.translate.title
@@ -0,0 +1,10 @@
1
+ - self.rendered?(__FILE__) do
2
+ :plain
3
+ // #{__FILE__}
4
+ $(document).ready(function() {
5
+ $("div.menu a.page").click(function(event) {
6
+ event.preventDefault();
7
+ RubyApp.sendEvent({_class:'RubyApp::Elements::Navigation::PageMenu::NavigatedEvent', source_id:$(this).parent().parent().attr('id'), page:$(this).attr('page')});
8
+ });
9
+ });
10
+ = yield
@@ -0,0 +1,57 @@
1
+ module RubyApp
2
+
3
+ module Elements
4
+
5
+ module Navigation
6
+ require 'ruby_app/element'
7
+
8
+ class PageMenu < RubyApp::Element
9
+
10
+ class NavigatedEvent < RubyApp::Element::Event
11
+
12
+ attr_reader :page
13
+
14
+ def initialize(data)
15
+ super(data)
16
+ @page = eval(data['page'])
17
+ end
18
+
19
+ def to_hash
20
+ super.merge('page' => @page)
21
+ end
22
+
23
+ end
24
+
25
+ template_path(:all, File.dirname(__FILE__))
26
+
27
+ attr_reader :pages
28
+
29
+ def initialize
30
+ super
31
+ @pages = []
32
+ end
33
+
34
+ def current_page
35
+ RubyApp::Session.pages.last.class
36
+ end
37
+
38
+ protected
39
+
40
+ def on_event(event)
41
+ on_navigated(event) if event.is_a?(RubyApp::Elements::Navigation::PageMenu::NavigatedEvent)
42
+ super(event)
43
+ end
44
+
45
+ def on_navigated(event)
46
+ RubyApp::Session.pages.pop
47
+ RubyApp::Session.pages.push(event.page.new)
48
+ event.refresh
49
+ end
50
+
51
+ end
52
+
53
+ end
54
+
55
+ end
56
+
57
+ end
@@ -0,0 +1,21 @@
1
+ require 'rubygems'
2
+ require 'bundler/setup'
3
+
4
+ module RubyApp
5
+
6
+ module Elements
7
+ require 'ruby_app/elements/base/base_page'
8
+
9
+ class Page < RubyApp::Elements::Base::BasePage
10
+
11
+ template_path(:all, File.dirname(__FILE__))
12
+
13
+ def initialize
14
+ super
15
+ end
16
+
17
+ end
18
+
19
+ end
20
+
21
+ end
@@ -0,0 +1,2 @@
1
+ = RubyApp::Elements::Dialogs::BusyDialog.render(:css)
2
+ = yield
@@ -0,0 +1,2 @@
1
+ = RubyApp::Elements::Dialogs::BusyDialog.render(:js)
2
+ = yield
@@ -0,0 +1,77 @@
1
+ require 'rubygems'
2
+ require 'bundler/setup'
3
+
4
+ require 'openid'
5
+ require 'openid/store/filesystem'
6
+
7
+ module RubyApp
8
+
9
+ module Elements
10
+
11
+ module Pages
12
+
13
+ module Authentication
14
+
15
+ module OpenID
16
+ require 'ruby_app/elements/page'
17
+ require 'ruby_app/log'
18
+ require 'ruby_app/request'
19
+ require 'ruby_app/session'
20
+
21
+ class AuthenticationPage < RubyApp::Elements::Page
22
+
23
+ template_path(:all, File.dirname(__FILE__))
24
+
25
+ def initialize(identifier)
26
+ super()
27
+
28
+ self.loaded do |element, event|
29
+ RubyApp::Session.show(event, RubyApp::Elements::Dialogs::BusyDialog.new(RubyApp::Elements::Pages::Authentication::OpenID::AuthenticationPage.translate.busy_dialog.message)) do |_event|
30
+ if RubyApp::Request.query.empty?
31
+ @consumer = ::OpenID::Consumer.new(RubyApp::Session.data, ::OpenID::Store::Filesystem.new(File.dirname(__FILE__)))
32
+ request = @consumer.begin(identifier)
33
+ self.process_request(request)
34
+ _event.go(request.redirect_url(RubyApp::Request.url, RubyApp::Request.url))
35
+ else
36
+ response = @consumer.complete(RubyApp::Request.query, RubyApp::Request.url)
37
+ RubyApp::Log.debug("#{self.class}#loaded response.class=#{response.class}")
38
+ case response.status
39
+ when ::OpenID::Consumer::SUCCESS
40
+ RubyApp::Log.debug("#{self.class}#loaded response.identity_url=#{response.identity_url.inspect}")
41
+ RubyApp::Session.identity = self.create_identity_from_response(response)
42
+ RubyApp::Session.pages.pop
43
+ _event.refresh
44
+ when ::OpenID::Consumer::CANCEL
45
+ RubyApp::Session.pages.pop
46
+ _event.refresh
47
+ when ::OpenID::Consumer::FAILURE
48
+ RubyApp::Log.debug("#{self.class}#loaded response=#{response.inspect}")
49
+ end
50
+ end
51
+ end
52
+ end
53
+
54
+ end
55
+
56
+ def process_request(request)
57
+ end
58
+
59
+ def create_identity_from_response(response)
60
+ self.create_identity_from_url(response.identity_url)
61
+ end
62
+
63
+ def create_identity_from_url(url, data = {})
64
+ RubyApp::Session::Identity.new(url, data)
65
+ end
66
+
67
+ end
68
+
69
+ end
70
+
71
+ end
72
+
73
+ end
74
+
75
+ end
76
+
77
+ end
@@ -0,0 +1,52 @@
1
+ require 'rubygems'
2
+ require 'bundler/setup'
3
+
4
+ require 'openid/extensions/ax'
5
+
6
+ module RubyApp
7
+
8
+ module Elements
9
+
10
+ module Pages
11
+
12
+ module Authentication
13
+
14
+ module OpenID
15
+ require 'ruby_app/elements/pages/authentication/open_id/authentication_page'
16
+ require 'ruby_app/session'
17
+
18
+ class AXAuthenticationPage < RubyApp::Elements::Pages::Authentication::OpenID::AuthenticationPage
19
+
20
+ template_path(:all, File.dirname(__FILE__))
21
+
22
+ def initialize(identifier)
23
+ super(identifier)
24
+ end
25
+
26
+ def process_request(request)
27
+ ax_request = ::OpenID::AX::FetchRequest.new
28
+ ax_request.add(::OpenID::AX::AttrInfo.new(self.configuration.attributes.email, 'Email', true))
29
+ request.add_extension(ax_request)
30
+ end
31
+
32
+ def create_identity_from_response(response)
33
+ ax_response = ::OpenID::AX::FetchResponse.from_success_response(response)
34
+ if ax_response
35
+ self.create_identity_from_url(response.identity_url,
36
+ :email => ax_response.data[self.configuration.attributes.email].first)
37
+ else
38
+ super(response)
39
+ end
40
+ end
41
+
42
+ end
43
+
44
+ end
45
+
46
+ end
47
+
48
+ end
49
+
50
+ end
51
+
52
+ end
@@ -0,0 +1,30 @@
1
+ module RubyApp
2
+
3
+ module Elements
4
+
5
+ module Pages
6
+
7
+ module Authentication
8
+
9
+ module OpenID
10
+ require 'ruby_app/elements/pages/authentication/open_id/ax_authentication_page'
11
+
12
+ class GoogleAuthenticationPage < RubyApp::Elements::Pages::Authentication::OpenID::AXAuthenticationPage
13
+
14
+ template_path(:all, File.dirname(__FILE__))
15
+
16
+ def initialize(identifier = self.configuration.identifier)
17
+ super(identifier)
18
+ end
19
+
20
+ end
21
+
22
+ end
23
+
24
+ end
25
+
26
+ end
27
+
28
+ end
29
+
30
+ end
@@ -0,0 +1,30 @@
1
+ module RubyApp
2
+
3
+ module Elements
4
+
5
+ module Pages
6
+
7
+ module Authentication
8
+
9
+ module OpenID
10
+ require 'ruby_app/elements/pages/authentication/open_id/sreg_authentication_page'
11
+
12
+ class MyOpenIDAuthenticationPage < RubyApp::Elements::Pages::Authentication::OpenID::SRegAuthenticationPage
13
+
14
+ template_path(:all, File.dirname(__FILE__))
15
+
16
+ def initialize(identifier = self.configuration.identifier)
17
+ super(identifier)
18
+ end
19
+
20
+ end
21
+
22
+ end
23
+
24
+ end
25
+
26
+ end
27
+
28
+ end
29
+
30
+ end
@@ -0,0 +1,52 @@
1
+ require 'rubygems'
2
+ require 'bundler/setup'
3
+
4
+ require 'openid/extensions/sreg'
5
+
6
+ module RubyApp
7
+
8
+ module Elements
9
+
10
+ module Pages
11
+
12
+ module Authentication
13
+
14
+ module OpenID
15
+ require 'ruby_app/elements/pages/authentication/open_id/authentication_page'
16
+ require 'ruby_app/session'
17
+
18
+ class SRegAuthenticationPage < RubyApp::Elements::Pages::Authentication::OpenID::AuthenticationPage
19
+
20
+ template_path(:all, File.dirname(__FILE__))
21
+
22
+ def initialize(identifier)
23
+ super(identifier)
24
+ end
25
+
26
+ def process_request(request)
27
+ sreg_request = ::OpenID::SReg::Request.new
28
+ sreg_request.request_fields(['email'], true)
29
+ request.add_extension(sreg_request)
30
+ end
31
+
32
+ def create_identity_from_response(response)
33
+ sreg_response = ::OpenID::SReg::Response.from_success_response(response)
34
+ unless sreg_response.empty?
35
+ create_identity_from_url(response.identity_url,
36
+ :email => sreg_response.data['email'])
37
+ else
38
+ super(response)
39
+ end
40
+ end
41
+
42
+ end
43
+
44
+ end
45
+
46
+ end
47
+
48
+ end
49
+
50
+ end
51
+
52
+ end