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.
- data/.gitignore +13 -0
- data/.rvmrc +1 -0
- data/Gemfile +4 -0
- data/README.md +0 -0
- data/bin/console.rb +8 -0
- data/bin/ruby_app +168 -0
- data/features/breadcrumbs.feature +11 -0
- data/features/content.feature +16 -0
- data/features/default.feature +5 -0
- data/features/dialog.feature +56 -0
- data/features/exception.feature +53 -0
- data/features/input.feature +13 -0
- data/features/list.feature +12 -0
- data/features/month.feature +14 -0
- data/features/step_definitions/default_macros.rb +16 -0
- data/features/step_definitions/default_steps.rb +36 -0
- data/features/support/env.rb +12 -0
- data/lib/ruby_app.rb +1 -0
- data/lib/ruby_app/application.rb +72 -0
- data/lib/ruby_app/config.ru +27 -0
- data/lib/ruby_app/config.yml +15 -0
- data/lib/ruby_app/configuration.rb +44 -0
- data/lib/ruby_app/element.rb +120 -0
- data/lib/ruby_app/elements/base/base_dialog.css.haml +9 -0
- data/lib/ruby_app/elements/base/base_dialog.html.haml +4 -0
- data/lib/ruby_app/elements/base/base_dialog.rb +64 -0
- data/lib/ruby_app/elements/base/base_page.css.haml +13 -0
- data/lib/ruby_app/elements/base/base_page.html.haml +20 -0
- data/lib/ruby_app/elements/base/base_page.js.haml +97 -0
- data/lib/ruby_app/elements/base/base_page.rb +80 -0
- data/lib/ruby_app/elements/button.html.haml +4 -0
- data/lib/ruby_app/elements/button.rb +19 -0
- data/lib/ruby_app/elements/calendars/base/base_month.css.haml +10 -0
- data/lib/ruby_app/elements/calendars/base/base_month.html.haml +42 -0
- data/lib/ruby_app/elements/calendars/base/base_month.js.haml +18 -0
- data/lib/ruby_app/elements/calendars/base/base_month.rb +101 -0
- data/lib/ruby_app/elements/calendars/month.rb +27 -0
- data/lib/ruby_app/elements/click.js.haml +10 -0
- data/lib/ruby_app/elements/click.rb +44 -0
- data/lib/ruby_app/elements/dialog.rb +23 -0
- data/lib/ruby_app/elements/dialogs/base/base_busy_dialog.css.haml +9 -0
- data/lib/ruby_app/elements/dialogs/base/base_busy_dialog.html.haml +7 -0
- data/lib/ruby_app/elements/dialogs/base/base_busy_dialog.rb +27 -0
- data/lib/ruby_app/elements/dialogs/base/base_close_dialog.css.haml +11 -0
- data/lib/ruby_app/elements/dialogs/base/base_close_dialog.html.haml +6 -0
- data/lib/ruby_app/elements/dialogs/base/base_close_dialog.js.haml +2 -0
- data/lib/ruby_app/elements/dialogs/base/base_close_dialog.rb +33 -0
- data/lib/ruby_app/elements/dialogs/base/base_yes_no_dialog.css.haml +15 -0
- data/lib/ruby_app/elements/dialogs/base/base_yes_no_dialog.html.haml +8 -0
- data/lib/ruby_app/elements/dialogs/base/base_yes_no_dialog.js.haml +2 -0
- data/lib/ruby_app/elements/dialogs/base/base_yes_no_dialog.rb +40 -0
- data/lib/ruby_app/elements/dialogs/blank_dialog.html.haml +9 -0
- data/lib/ruby_app/elements/dialogs/blank_dialog.rb +22 -0
- data/lib/ruby_app/elements/dialogs/busy_dialog.rb +22 -0
- data/lib/ruby_app/elements/dialogs/calendars/month_dialog.css.haml +19 -0
- data/lib/ruby_app/elements/dialogs/calendars/month_dialog.html.haml +18 -0
- data/lib/ruby_app/elements/dialogs/calendars/month_dialog.js.haml +3 -0
- data/lib/ruby_app/elements/dialogs/calendars/month_dialog.rb +52 -0
- data/lib/ruby_app/elements/dialogs/close_dialog.rb +22 -0
- data/lib/ruby_app/elements/dialogs/confirmation_dialog.html.haml +8 -0
- data/lib/ruby_app/elements/dialogs/confirmation_dialog.rb +26 -0
- data/lib/ruby_app/elements/dialogs/exception_dialog.html.haml +8 -0
- data/lib/ruby_app/elements/dialogs/exception_dialog.rb +23 -0
- data/lib/ruby_app/elements/dialogs/message_dialog.html.haml +8 -0
- data/lib/ruby_app/elements/dialogs/message_dialog.rb +26 -0
- data/lib/ruby_app/elements/dialogs/yes_no_dialog.rb +22 -0
- data/lib/ruby_app/elements/exception_element.html.haml +7 -0
- data/lib/ruby_app/elements/exception_element.rb +19 -0
- data/lib/ruby_app/elements/input.html.haml +3 -0
- data/lib/ruby_app/elements/input.js.haml +9 -0
- data/lib/ruby_app/elements/input.rb +54 -0
- data/lib/ruby_app/elements/inputs/duration_input.rb +46 -0
- data/lib/ruby_app/elements/link.html.haml +4 -0
- data/lib/ruby_app/elements/link.rb +19 -0
- data/lib/ruby_app/elements/list.html.haml +9 -0
- data/lib/ruby_app/elements/list.js.haml +10 -0
- data/lib/ruby_app/elements/list.rb +55 -0
- data/lib/ruby_app/elements/lists/select.html.haml +14 -0
- data/lib/ruby_app/elements/lists/select.js.haml +10 -0
- data/lib/ruby_app/elements/lists/select.rb +47 -0
- data/lib/ruby_app/elements/markdown.html.haml +5 -0
- data/lib/ruby_app/elements/markdown.js.haml +10 -0
- data/lib/ruby_app/elements/markdown.rb +51 -0
- data/lib/ruby_app/elements/navigation/back_button.html.haml +2 -0
- data/lib/ruby_app/elements/navigation/back_button.rb +29 -0
- data/lib/ruby_app/elements/navigation/base/base_breadcrumbs.html.haml +17 -0
- data/lib/ruby_app/elements/navigation/base/base_breadcrumbs.js.haml +10 -0
- data/lib/ruby_app/elements/navigation/base/base_breadcrumbs.rb +58 -0
- data/lib/ruby_app/elements/navigation/breadcrumbs.rb +22 -0
- data/lib/ruby_app/elements/navigation/page_link.html.haml +9 -0
- data/lib/ruby_app/elements/navigation/page_link.js.haml +10 -0
- data/lib/ruby_app/elements/navigation/page_link.rb +56 -0
- data/lib/ruby_app/elements/navigation/page_menu.html.haml +12 -0
- data/lib/ruby_app/elements/navigation/page_menu.js.haml +10 -0
- data/lib/ruby_app/elements/navigation/page_menu.rb +57 -0
- data/lib/ruby_app/elements/page.rb +21 -0
- data/lib/ruby_app/elements/pages/authentication/open_id/authentication_page.css.haml +2 -0
- data/lib/ruby_app/elements/pages/authentication/open_id/authentication_page.js.haml +2 -0
- data/lib/ruby_app/elements/pages/authentication/open_id/authentication_page.rb +77 -0
- data/lib/ruby_app/elements/pages/authentication/open_id/ax_authentication_page.rb +52 -0
- data/lib/ruby_app/elements/pages/authentication/open_id/google_authentication_page.rb +30 -0
- data/lib/ruby_app/elements/pages/authentication/open_id/my_open_id_authentication_page.rb +30 -0
- data/lib/ruby_app/elements/pages/authentication/open_id/sreg_authentication_page.rb +52 -0
- data/lib/ruby_app/elements/pages/authentication/open_id/yahoo_authentication_page.rb +30 -0
- data/lib/ruby_app/elements/pages/base/base_blank_page.css.haml +18 -0
- data/lib/ruby_app/elements/pages/base/base_blank_page.html.haml +11 -0
- data/lib/ruby_app/elements/pages/base/base_blank_page.js.haml +3 -0
- data/lib/ruby_app/elements/pages/base/base_blank_page.rb +36 -0
- data/lib/ruby_app/elements/pages/blank_page.rb +22 -0
- data/lib/ruby_app/elements/pages/default_page.css.haml +2 -0
- data/lib/ruby_app/elements/pages/default_page.html.haml +5 -0
- data/lib/ruby_app/elements/pages/default_page.js.haml +2 -0
- data/lib/ruby_app/elements/pages/default_page.rb +34 -0
- data/lib/ruby_app/elements/pages/exception_page.html.haml +8 -0
- data/lib/ruby_app/elements/pages/exception_page.rb +23 -0
- data/lib/ruby_app/elements/pages/quit_page.html.haml +5 -0
- data/lib/ruby_app/elements/pages/quit_page.rb +24 -0
- data/lib/ruby_app/elements/pages/settings_page.css.haml +2 -0
- data/lib/ruby_app/elements/pages/settings_page.html.haml +5 -0
- data/lib/ruby_app/elements/pages/settings_page.js.haml +2 -0
- data/lib/ruby_app/elements/pages/settings_page.rb +37 -0
- data/lib/ruby_app/elements/pages/test_pages/default_test_page.css.haml +4 -0
- data/lib/ruby_app/elements/pages/test_pages/default_test_page.html.haml +5 -0
- data/lib/ruby_app/elements/pages/test_pages/default_test_page.js.haml +4 -0
- data/lib/ruby_app/elements/pages/test_pages/default_test_page.rb +55 -0
- data/lib/ruby_app/elements/pages/test_pages/dialog_test_page.css.haml +7 -0
- data/lib/ruby_app/elements/pages/test_pages/dialog_test_page.html.haml +5 -0
- data/lib/ruby_app/elements/pages/test_pages/dialog_test_page.js.haml +7 -0
- data/lib/ruby_app/elements/pages/test_pages/dialog_test_page.rb +66 -0
- data/lib/ruby_app/elements/pages/test_pages/input_test_page.css.haml +4 -0
- data/lib/ruby_app/elements/pages/test_pages/input_test_page.html.haml +9 -0
- data/lib/ruby_app/elements/pages/test_pages/input_test_page.js.haml +4 -0
- data/lib/ruby_app/elements/pages/test_pages/input_test_page.rb +44 -0
- data/lib/ruby_app/elements/pages/test_pages/list_test_page.css.haml +4 -0
- data/lib/ruby_app/elements/pages/test_pages/list_test_page.html.haml +6 -0
- data/lib/ruby_app/elements/pages/test_pages/list_test_page.js.haml +4 -0
- data/lib/ruby_app/elements/pages/test_pages/list_test_page.rb +51 -0
- data/lib/ruby_app/language.rb +44 -0
- data/lib/ruby_app/log.rb +33 -0
- data/lib/ruby_app/mixins/configuration.rb +31 -0
- data/lib/ruby_app/mixins/delegate.rb +15 -0
- data/lib/ruby_app/mixins/hash.rb +19 -0
- data/lib/ruby_app/mixins/render.rb +76 -0
- data/lib/ruby_app/mixins/route.rb +39 -0
- data/lib/ruby_app/mixins/template.rb +38 -0
- data/lib/ruby_app/mixins/translate.rb +35 -0
- data/lib/ruby_app/rack/application.rb +24 -0
- data/lib/ruby_app/rack/route.rb +128 -0
- data/lib/ruby_app/request.rb +54 -0
- data/lib/ruby_app/resources/elements/dialogs/base/base_busy_dialog.gif +0 -0
- data/lib/ruby_app/resources/favicon.ico +0 -0
- data/lib/ruby_app/resources/themes/mobile/base/base_page/icon.png +0 -0
- data/lib/ruby_app/resources/themes/mobile/base/base_page/icon.psd +0 -0
- data/lib/ruby_app/resources/themes/mobile/base/base_page/manifest +0 -0
- data/lib/ruby_app/resources/themes/mobile/base/base_page/start.png +0 -0
- data/lib/ruby_app/resources/themes/mobile/base/base_page/start.psd +0 -0
- data/lib/ruby_app/resources/themes/mobile/lists/select.png +0 -0
- data/lib/ruby_app/resources/themes/mobile/lists/select.psd +0 -0
- data/lib/ruby_app/session.rb +101 -0
- data/lib/ruby_app/templates/application/Gemfile +3 -0
- data/lib/ruby_app/templates/application/config.ru +42 -0
- data/lib/ruby_app/templates/application/config.yml +1 -0
- data/lib/ruby_app/templates/application/console.rb +16 -0
- data/lib/ruby_app/templates/application/lib/_APPLICATION_DOWNCODE_/application.rb +16 -0
- data/lib/ruby_app/templates/application/lib/_APPLICATION_DOWNCODE_/elements/pages/default_page.css.haml +9 -0
- data/lib/ruby_app/templates/application/lib/_APPLICATION_DOWNCODE_/elements/pages/default_page.html.haml +7 -0
- data/lib/ruby_app/templates/application/lib/_APPLICATION_DOWNCODE_/elements/pages/default_page.rb +26 -0
- data/lib/ruby_app/templates/application/lib/_APPLICATION_DOWNCODE_/session.rb +17 -0
- data/lib/ruby_app/templates/application/lib/_APPLICATION_DOWNCODE_/version.rb +4 -0
- data/lib/ruby_app/templates/application/spec/spec_helper.rb +1 -0
- data/lib/ruby_app/templates/application/spec/support/shared.rb +18 -0
- data/lib/ruby_app/templates/application/translations/en.yml +5 -0
- data/lib/ruby_app/templates/page/_PAGE_DOWNCODE_.css.haml +3 -0
- data/lib/ruby_app/templates/page/_PAGE_DOWNCODE_.html.haml +4 -0
- data/lib/ruby_app/templates/page/_PAGE_DOWNCODE_.js.haml +3 -0
- data/lib/ruby_app/templates/page/_PAGE_DOWNCODE_.rb +14 -0
- data/lib/ruby_app/themes/mobile.rb +37 -0
- data/lib/ruby_app/themes/mobile/base/base_page.html.haml +30 -0
- data/lib/ruby_app/themes/mobile/calendars/month.css.haml +21 -0
- data/lib/ruby_app/themes/mobile/colors.sass +24 -0
- data/lib/ruby_app/themes/mobile/dialog.css.haml +17 -0
- data/lib/ruby_app/themes/mobile/dialogs/blank_dialog.css.haml +12 -0
- data/lib/ruby_app/themes/mobile/dialogs/busy_dialog.css.haml +9 -0
- data/lib/ruby_app/themes/mobile/dialogs/close_dialog.css.haml +12 -0
- data/lib/ruby_app/themes/mobile/dialogs/yes_no_dialog.css.haml +14 -0
- data/lib/ruby_app/themes/mobile/list.css.haml +25 -0
- data/lib/ruby_app/themes/mobile/lists/select.css.haml +27 -0
- data/lib/ruby_app/themes/mobile/markdown.css.haml +11 -0
- data/lib/ruby_app/themes/mobile/navigation/base/base_breadcrumbs.html.haml +7 -0
- data/lib/ruby_app/themes/mobile/page.css.haml +18 -0
- data/lib/ruby_app/themes/mobile/pages/base/base_blank_page.css.haml +18 -0
- data/lib/ruby_app/themes/mobile/pages/base/base_blank_page.html.haml +13 -0
- data/lib/ruby_app/themes/mobile/pages/blank_page.css.haml +19 -0
- data/lib/ruby_app/translations/en.yml +125 -0
- data/lib/ruby_app/version.rb +4 -0
- data/rakefile +62 -0
- data/ruby_app.gemspec +40 -0
- data/spec/element_spec.rb +22 -0
- data/spec/elements/navigation/breadcrumbs_spec.rb +69 -0
- data/spec/elements/page_spec.rb +31 -0
- data/spec/mixins/render_spec.rb +182 -0
- data/spec/mixins/route_spec.rb +60 -0
- data/spec/mixins/template_spec.rb +78 -0
- data/spec/mixins/test_a.css.haml +3 -0
- data/spec/mixins/test_a.html.haml +3 -0
- data/spec/mixins/test_a.js.haml +3 -0
- data/spec/mixins/test_b.css.haml +4 -0
- data/spec/mixins/test_b.html.haml +3 -0
- data/spec/mixins/test_b.js.haml +4 -0
- data/spec/mixins/test_c.css.haml +4 -0
- data/spec/mixins/test_c.html.haml +2 -0
- data/spec/mixins/test_c.js.haml +4 -0
- data/spec/mixins/test_e.html.haml +2 -0
- data/spec/mixins/test_f.html.haml +2 -0
- data/spec/mixins/test_g.css.haml +4 -0
- data/spec/spec_helper.rb +1 -0
- data/spec/support/shared.rb +15 -0
- 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,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
|