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,9 @@
|
|
1
|
+
- self.rendered?(__FILE__) do
|
2
|
+
:plain
|
3
|
+
// #{__FILE__}
|
4
|
+
$(document).ready(function() {
|
5
|
+
$('input[type="text"]').live('change', function(event) {
|
6
|
+
RubyApp.sendEvent({_class:'RubyApp::Elements::Input::ChangedEvent', source_id:$(this).attr('id'), value:$(this).val()});
|
7
|
+
});
|
8
|
+
});
|
9
|
+
= yield
|
@@ -0,0 +1,54 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'bundler/setup'
|
3
|
+
|
4
|
+
require 'ruby-event'
|
5
|
+
|
6
|
+
module RubyApp
|
7
|
+
|
8
|
+
module Elements
|
9
|
+
require 'ruby_app/element'
|
10
|
+
|
11
|
+
class Input < RubyApp::Element
|
12
|
+
|
13
|
+
class ChangedEvent < RubyApp::Element::Event
|
14
|
+
|
15
|
+
attr_reader :value
|
16
|
+
|
17
|
+
def initialize(data)
|
18
|
+
super(data)
|
19
|
+
@value = data['value']
|
20
|
+
end
|
21
|
+
|
22
|
+
def to_hash
|
23
|
+
super.merge(:value => @value)
|
24
|
+
end
|
25
|
+
|
26
|
+
end
|
27
|
+
|
28
|
+
template_path(:all, File.dirname(__FILE__))
|
29
|
+
|
30
|
+
attr_accessor :value
|
31
|
+
|
32
|
+
event :changed
|
33
|
+
|
34
|
+
def initialize
|
35
|
+
super
|
36
|
+
end
|
37
|
+
|
38
|
+
protected
|
39
|
+
|
40
|
+
def on_event(event)
|
41
|
+
on_changed(event) if event.is_a?(RubyApp::Elements::Input::ChangedEvent)
|
42
|
+
super(event)
|
43
|
+
end
|
44
|
+
|
45
|
+
def on_changed(event)
|
46
|
+
@value = event.value
|
47
|
+
changed(event)
|
48
|
+
end
|
49
|
+
|
50
|
+
end
|
51
|
+
|
52
|
+
end
|
53
|
+
|
54
|
+
end
|
@@ -0,0 +1,46 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'bundler/setup'
|
3
|
+
|
4
|
+
require 'chronic_duration'
|
5
|
+
|
6
|
+
module RubyApp
|
7
|
+
|
8
|
+
module Elements
|
9
|
+
|
10
|
+
module Inputs
|
11
|
+
require 'ruby_app/elements/input'
|
12
|
+
|
13
|
+
class DurationInput < RubyApp::Elements::Input
|
14
|
+
|
15
|
+
template_path(:all, File.dirname(__FILE__))
|
16
|
+
|
17
|
+
attr_accessor :duration
|
18
|
+
|
19
|
+
def initialize
|
20
|
+
super
|
21
|
+
end
|
22
|
+
|
23
|
+
def duration=(value)
|
24
|
+
@duration = value
|
25
|
+
@value = ChronicDuration.output(@duration)
|
26
|
+
end
|
27
|
+
|
28
|
+
protected
|
29
|
+
|
30
|
+
def on_changed(event)
|
31
|
+
duration = ChronicDuration.parse(event.value)
|
32
|
+
if duration
|
33
|
+
@duration = duration
|
34
|
+
@value = ChronicDuration.output(@duration)
|
35
|
+
event.update_value("##{self.element_id}", @value)
|
36
|
+
changed(event)
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
end
|
41
|
+
|
42
|
+
end
|
43
|
+
|
44
|
+
end
|
45
|
+
|
46
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
module RubyApp
|
2
|
+
|
3
|
+
module Elements
|
4
|
+
require 'ruby_app/elements/click'
|
5
|
+
|
6
|
+
class Link < RubyApp::Elements::Click
|
7
|
+
|
8
|
+
template_path(:all, File.dirname(__FILE__))
|
9
|
+
|
10
|
+
def initialize
|
11
|
+
super
|
12
|
+
attributes.merge!(:href => '')
|
13
|
+
end
|
14
|
+
|
15
|
+
end
|
16
|
+
|
17
|
+
end
|
18
|
+
|
19
|
+
end
|
@@ -0,0 +1,10 @@
|
|
1
|
+
- self.rendered?(__FILE__) do
|
2
|
+
:plain
|
3
|
+
// #{__FILE__}
|
4
|
+
$(document).ready(function() {
|
5
|
+
$("ul.list > li.item > a.item").live('click', function(event) {
|
6
|
+
event.preventDefault();
|
7
|
+
RubyApp.sendEvent({_class:'RubyApp::Elements::List::SelectedEvent', source_id:$(this).parent().parent().attr('id'), index:$(this).attr('index')});
|
8
|
+
});
|
9
|
+
});
|
10
|
+
= yield
|
@@ -0,0 +1,55 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'bundler/setup'
|
3
|
+
|
4
|
+
require 'ruby-event'
|
5
|
+
|
6
|
+
module RubyApp
|
7
|
+
|
8
|
+
module Elements
|
9
|
+
require 'ruby_app/element'
|
10
|
+
|
11
|
+
class List < RubyApp::Element
|
12
|
+
|
13
|
+
class SelectedEvent < RubyApp::Element::Event
|
14
|
+
|
15
|
+
attr_reader :index, :item
|
16
|
+
|
17
|
+
def initialize(data)
|
18
|
+
super(data)
|
19
|
+
@index = data['index'].to_i
|
20
|
+
@item = self.source.items[@index]
|
21
|
+
end
|
22
|
+
|
23
|
+
def to_hash
|
24
|
+
super.merge('index' => @index)
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
28
|
+
|
29
|
+
template_path(:all, File.dirname(__FILE__))
|
30
|
+
|
31
|
+
attr_accessor :items
|
32
|
+
|
33
|
+
event :selected
|
34
|
+
|
35
|
+
def initialize
|
36
|
+
super
|
37
|
+
@items = []
|
38
|
+
end
|
39
|
+
|
40
|
+
protected
|
41
|
+
|
42
|
+
def on_event(event)
|
43
|
+
on_selected(event) if event.is_a?(RubyApp::Elements::List::SelectedEvent)
|
44
|
+
super(event)
|
45
|
+
end
|
46
|
+
|
47
|
+
def on_selected(event)
|
48
|
+
selected(event)
|
49
|
+
end
|
50
|
+
|
51
|
+
end
|
52
|
+
|
53
|
+
end
|
54
|
+
|
55
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
/
|
2
|
+
#{__FILE__}
|
3
|
+
%ul.select{attributes}
|
4
|
+
- is_even = true
|
5
|
+
- self.items.each_with_index do |item, index|
|
6
|
+
- unless index == self.selected_index
|
7
|
+
%li.item{:class => is_even ? 'even' : 'odd'}
|
8
|
+
%a.item{:href => '', :index => index}
|
9
|
+
= yield(:item, item, index) || item
|
10
|
+
- else
|
11
|
+
%li.item.selected
|
12
|
+
%a.item.selected{:href => '', :index => index}
|
13
|
+
= yield(:item, item, index) || item
|
14
|
+
- is_even = !is_even
|
@@ -0,0 +1,10 @@
|
|
1
|
+
- self.rendered?(__FILE__) do
|
2
|
+
:plain
|
3
|
+
// #{__FILE__}
|
4
|
+
$(document).ready(function() {
|
5
|
+
$("ul.select > li.item > a.item").live('click', function(event) {
|
6
|
+
event.preventDefault();
|
7
|
+
RubyApp.sendEvent({_class:'RubyApp::Elements::List::SelectedEvent', source_id:$(this).parent().parent().attr('id'), index:$(this).attr('index')});
|
8
|
+
});
|
9
|
+
});
|
10
|
+
= yield
|
@@ -0,0 +1,47 @@
|
|
1
|
+
module RubyApp
|
2
|
+
|
3
|
+
module Elements
|
4
|
+
|
5
|
+
module Lists
|
6
|
+
require 'ruby_app/elements/list'
|
7
|
+
|
8
|
+
class Select < RubyApp::Elements::List
|
9
|
+
|
10
|
+
template_path(:all, File.dirname(__FILE__))
|
11
|
+
|
12
|
+
exclude_parent_template(:html, :css, :js)
|
13
|
+
|
14
|
+
attr_accessor :selected_index, :selected_item
|
15
|
+
|
16
|
+
event :selected
|
17
|
+
|
18
|
+
def initialize
|
19
|
+
super
|
20
|
+
end
|
21
|
+
|
22
|
+
def selected_index=(index)
|
23
|
+
@selected_index = index
|
24
|
+
@selected_item = @items[index]
|
25
|
+
end
|
26
|
+
|
27
|
+
def selected_item=(item)
|
28
|
+
@selected_index = @items.index(item)
|
29
|
+
@selected_item = @selected_index ? @items[@selected_index] : nil
|
30
|
+
end
|
31
|
+
|
32
|
+
protected
|
33
|
+
|
34
|
+
def on_selected(event)
|
35
|
+
@selected_index = event.index
|
36
|
+
@selected_item = event.item
|
37
|
+
event.update_element(self)
|
38
|
+
super(event)
|
39
|
+
end
|
40
|
+
|
41
|
+
end
|
42
|
+
|
43
|
+
end
|
44
|
+
|
45
|
+
end
|
46
|
+
|
47
|
+
end
|
@@ -0,0 +1,10 @@
|
|
1
|
+
- self.rendered?(__FILE__) do
|
2
|
+
:plain
|
3
|
+
// #{__FILE__}
|
4
|
+
$(document).ready(function() {
|
5
|
+
$('div.markdown a').live('click', function(event) {
|
6
|
+
event.preventDefault();
|
7
|
+
RubyApp.sendEvent({_class:'RubyApp::Elements::Markdown::NavigatedEvent', source_id:$(this).parents('div.markdown').attr('id'), name:$(this).attr('href')});
|
8
|
+
});
|
9
|
+
});
|
10
|
+
= yield
|
@@ -0,0 +1,51 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'bundler/setup'
|
3
|
+
|
4
|
+
require 'ruby-event'
|
5
|
+
|
6
|
+
module RubyApp
|
7
|
+
|
8
|
+
module Elements
|
9
|
+
require 'ruby_app/element'
|
10
|
+
|
11
|
+
class Markdown < RubyApp::Element
|
12
|
+
|
13
|
+
class NavigatedEvent < RubyApp::Element::Event
|
14
|
+
|
15
|
+
attr_reader :name
|
16
|
+
|
17
|
+
def initialize(data)
|
18
|
+
super(data)
|
19
|
+
@name = data['name']
|
20
|
+
end
|
21
|
+
|
22
|
+
def to_hash
|
23
|
+
super.merge('name' => @name)
|
24
|
+
end
|
25
|
+
|
26
|
+
end
|
27
|
+
|
28
|
+
template_path(:all, File.dirname(__FILE__))
|
29
|
+
|
30
|
+
event :navigated
|
31
|
+
|
32
|
+
def initialize
|
33
|
+
super
|
34
|
+
end
|
35
|
+
|
36
|
+
protected
|
37
|
+
|
38
|
+
def on_event(event)
|
39
|
+
on_navigated(event) if event.is_a?(RubyApp::Elements::Markdown::NavigatedEvent)
|
40
|
+
super(event)
|
41
|
+
end
|
42
|
+
|
43
|
+
def on_navigated(event)
|
44
|
+
navigated(event)
|
45
|
+
end
|
46
|
+
|
47
|
+
end
|
48
|
+
|
49
|
+
end
|
50
|
+
|
51
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
module RubyApp
|
2
|
+
|
3
|
+
module Elements
|
4
|
+
|
5
|
+
module Navigation
|
6
|
+
require 'ruby_app/elements/button'
|
7
|
+
require 'ruby_app/session'
|
8
|
+
|
9
|
+
class BackButton < RubyApp::Elements::Button
|
10
|
+
|
11
|
+
template_path(:all, File.dirname(__FILE__))
|
12
|
+
|
13
|
+
def initialize
|
14
|
+
super
|
15
|
+
|
16
|
+
self.clicked do |element, event|
|
17
|
+
RubyApp::Session.pages.pop
|
18
|
+
event.refresh
|
19
|
+
end
|
20
|
+
|
21
|
+
end
|
22
|
+
|
23
|
+
end
|
24
|
+
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
28
|
+
|
29
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
/
|
2
|
+
#{__FILE__}
|
3
|
+
%div.breadcrumbs{attributes}
|
4
|
+
- count = RubyApp::Session.pages.length
|
5
|
+
- RubyApp::Session.pages.each_with_index do |page, index|
|
6
|
+
- if index < count - 1
|
7
|
+
- if index > 0
|
8
|
+
%span.divider
|
9
|
+
»
|
10
|
+
%a.breadcrumb{:href => '', :page_id => page.element_id}
|
11
|
+
= page.translate.title
|
12
|
+
- else
|
13
|
+
- if index > 0
|
14
|
+
%span.divider
|
15
|
+
»
|
16
|
+
%span.current
|
17
|
+
= page.translate.title
|
@@ -0,0 +1,10 @@
|
|
1
|
+
- self.rendered?(__FILE__) do
|
2
|
+
:plain
|
3
|
+
// #{__FILE__}
|
4
|
+
$(document).ready(function() {
|
5
|
+
$("div.breadcrumbs a").click(function(event) {
|
6
|
+
event.preventDefault();
|
7
|
+
RubyApp.sendEvent({_class:'RubyApp::Elements::Navigation::Breadcrumbs::NavigatedEvent', source_id:$(this).parent().attr('id'), page_id:$(this).attr('page_id')});
|
8
|
+
});
|
9
|
+
});
|
10
|
+
= yield
|
@@ -0,0 +1,58 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'bundler/setup'
|
3
|
+
|
4
|
+
require 'ruby-event'
|
5
|
+
|
6
|
+
module RubyApp
|
7
|
+
|
8
|
+
module Elements
|
9
|
+
|
10
|
+
module Navigation
|
11
|
+
|
12
|
+
module Base
|
13
|
+
require 'ruby_app/element'
|
14
|
+
|
15
|
+
class BaseBreadcrumbs < RubyApp::Element
|
16
|
+
|
17
|
+
class NavigatedEvent < RubyApp::Element::Event
|
18
|
+
|
19
|
+
attr_reader :page
|
20
|
+
|
21
|
+
def initialize(data)
|
22
|
+
super(data)
|
23
|
+
@page = RubyApp::Element.get_element(data['page_id'])
|
24
|
+
end
|
25
|
+
|
26
|
+
def to_hash
|
27
|
+
super.merge('page_id' => @page.element_id)
|
28
|
+
end
|
29
|
+
|
30
|
+
end
|
31
|
+
|
32
|
+
template_path(:all, File.dirname(__FILE__))
|
33
|
+
|
34
|
+
def initialize
|
35
|
+
super
|
36
|
+
end
|
37
|
+
|
38
|
+
protected
|
39
|
+
|
40
|
+
def on_event(event)
|
41
|
+
on_navigated(event) if event.is_a?(RubyApp::Elements::Navigation::Base::BaseBreadcrumbs::NavigatedEvent)
|
42
|
+
super(event)
|
43
|
+
end
|
44
|
+
|
45
|
+
def on_navigated(event)
|
46
|
+
RubyApp::Session.pages.slice!(RubyApp::Session.pages.index(event.page) + 1, RubyApp::Session.pages.length - ( RubyApp::Session.pages.index(event.page) + 1 ))
|
47
|
+
event.refresh
|
48
|
+
end
|
49
|
+
|
50
|
+
end
|
51
|
+
|
52
|
+
end
|
53
|
+
|
54
|
+
end
|
55
|
+
|
56
|
+
end
|
57
|
+
|
58
|
+
end
|