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,80 @@
1
+ require 'rubygems'
2
+ require 'bundler/setup'
3
+
4
+ require 'ruby-event'
5
+
6
+ module RubyApp
7
+
8
+ module Elements
9
+
10
+ module Base
11
+ require 'ruby_app/element'
12
+ require 'ruby_app/language'
13
+
14
+ class BasePage < RubyApp::Element
15
+
16
+ class LoadedEvent < RubyApp::Element::Event
17
+
18
+ def initialize(data)
19
+ super(data)
20
+ end
21
+
22
+ end
23
+
24
+ class TriggeredEvent < RubyApp::Element::Event
25
+
26
+ def initialize(data)
27
+ super(data)
28
+ end
29
+
30
+ end
31
+
32
+ class ReleasedEvent < RubyApp::Element::Event
33
+
34
+ def initialize(data)
35
+ super(data)
36
+ end
37
+
38
+ end
39
+
40
+ template_path(:all, File.dirname(__FILE__))
41
+
42
+ attr_accessor :interval
43
+
44
+ event :loaded
45
+ event :triggered
46
+ event :released
47
+
48
+ def initialize
49
+ super
50
+ @interval = 0
51
+ end
52
+
53
+ protected
54
+
55
+ def on_event(event)
56
+ on_loaded(event) if event.is_a?(RubyApp::Elements::Base::BasePage::LoadedEvent)
57
+ on_triggered(event) if event.is_a?(RubyApp::Elements::Base::BasePage::TriggeredEvent)
58
+ on_released(event) if event.is_a?(RubyApp::Elements::Base::BasePage::ReleasedEvent)
59
+ super(event)
60
+ end
61
+
62
+ def on_loaded(event)
63
+ loaded(event)
64
+ end
65
+
66
+ def on_triggered(event)
67
+ triggered(event)
68
+ end
69
+
70
+ def on_released(event)
71
+ released(event)
72
+ end
73
+
74
+ end
75
+
76
+ end
77
+
78
+ end
79
+
80
+ end
@@ -0,0 +1,4 @@
1
+ /
2
+ #{__FILE__}
3
+ %button.click{attributes}
4
+ = yield :body
@@ -0,0 +1,19 @@
1
+ module RubyApp
2
+
3
+ module Elements
4
+ require 'ruby_app/elements/click'
5
+
6
+ class Button < RubyApp::Elements::Click
7
+
8
+ template_path(:all, File.dirname(__FILE__))
9
+
10
+ def initialize
11
+ super
12
+ attributes.merge!(:type => :button)
13
+ end
14
+
15
+ end
16
+
17
+ end
18
+
19
+ end
@@ -0,0 +1,10 @@
1
+ - self.rendered?(__FILE__) do
2
+ :sass
3
+ /* #{__FILE__}
4
+ div.month
5
+ > table
6
+ tr
7
+ > td
8
+ text-align: center
9
+ vertical-align: middle
10
+ = yield
@@ -0,0 +1,42 @@
1
+ /
2
+ #{__FILE__}
3
+ %div.month{attributes}
4
+ %table
5
+ %thead
6
+ %tr
7
+ %td.left
8
+ %a.previous{:href => ''}
9
+ = RubyApp::Language.locale.strftime(self.display << 1, '%b')
10
+ %td.center{:colspan => 5}
11
+ = RubyApp::Language.locale.strftime(self.display, '%B %Y')
12
+ %td.right
13
+ %a.next{:href => ''}
14
+ = RubyApp::Language.locale.strftime(self.display >> 1, '%b')
15
+ - sunday = self.display_first_date
16
+ %tr
17
+ - (0..6).each do |index|
18
+ - date = sunday + index
19
+ %td= RubyApp::Language.locale.strftime(date, '%a')
20
+ %tbody
21
+ - month = self.display.month
22
+ - sunday = self.display_first_date
23
+ - while sunday < self.display_last_date
24
+ %tr
25
+ - (0..6).each do |index|
26
+ - date = sunday + index
27
+ - if date.month == month
28
+ - if date == self.value
29
+ %td.current
30
+ = date.day
31
+ - elsif date == Date.today
32
+ %td.today
33
+ %a.day{:href => '', :date => date.strftime}
34
+ = date.day
35
+ - else
36
+ %td.day
37
+ %a.day{:href => '', :date => date.strftime}
38
+ = date.day
39
+ - else
40
+ %td.none
41
+ = date.day
42
+ - sunday += 7
@@ -0,0 +1,18 @@
1
+ - self.rendered?(__FILE__) do
2
+ :plain
3
+ // #{__FILE__}
4
+ $(document).ready(function() {
5
+ $("div.month table thead tr td a.previous").live('click', function(event) {
6
+ event.preventDefault();
7
+ RubyApp.sendEvent({_class:'RubyApp::Elements::Calendars::Month::MovedEvent', source_id:$(this).parents('div.month').attr('id'), unit:'month', amount:-1});
8
+ });
9
+ $("div.month table thead tr td a.next").live('click', function(event) {
10
+ event.preventDefault();
11
+ RubyApp.sendEvent({_class:'RubyApp::Elements::Calendars::Month::MovedEvent', source_id:$(this).parents('div.month').attr('id'), unit:'month', amount:1});
12
+ });
13
+ $("div.month table tbody tr td a.day").live('click', function(event) {
14
+ event.preventDefault();
15
+ RubyApp.sendEvent({_class:'RubyApp::Elements::Calendars::Month::ChangedEvent', source_id:$(this).parents('div.month').attr('id'), date:$(this).attr('date')});
16
+ });
17
+ });
18
+ = yield
@@ -0,0 +1,101 @@
1
+ require 'rubygems'
2
+ require 'bundler/setup'
3
+
4
+ require 'ruby-event'
5
+
6
+ module RubyApp
7
+
8
+ module Elements
9
+
10
+ module Calendars
11
+
12
+ module Base
13
+ require 'ruby_app/element'
14
+
15
+ class BaseMonth < RubyApp::Element
16
+
17
+ class MovedEvent < RubyApp::Element::Event
18
+
19
+ attr_reader :unit, :amount
20
+
21
+ def initialize(data)
22
+ super(data)
23
+ @unit = data['unit'].to_sym
24
+ @amount = data['amount'].to_i
25
+ end
26
+
27
+ def to_hash
28
+ super.merge('unit' => @name, 'amount' => @amount)
29
+ end
30
+
31
+ end
32
+
33
+ class ChangedEvent < RubyApp::Element::Event
34
+
35
+ attr_reader :value
36
+
37
+ def initialize(data)
38
+ super(data)
39
+ @value = Date.parse(data['date'])
40
+ end
41
+
42
+ def to_hash
43
+ super.merge('value' => @value.strftime)
44
+ end
45
+
46
+ end
47
+
48
+ template_path(:all, File.dirname(__FILE__))
49
+
50
+ attr_accessor :display, :value
51
+
52
+ event :changed
53
+
54
+ def initialize
55
+ super
56
+ @display = Date.today
57
+ @value = @display
58
+ end
59
+
60
+ def display_first_date
61
+ first_of_month = @display - (@display.day - 1)
62
+ first_of_month - first_of_month.wday
63
+ end
64
+
65
+ def display_last_date
66
+ next_month = @display >> 1
67
+ last_of_month = next_month - next_month.day
68
+ last_of_month + (6 - last_of_month.wday)
69
+ end
70
+
71
+ protected
72
+
73
+ def on_event(event)
74
+ on_moved(event) if event.is_a?(RubyApp::Elements::Calendars::Month::MovedEvent)
75
+ on_changed(event) if event.is_a?(RubyApp::Elements::Calendars::Month::ChangedEvent)
76
+ super(event)
77
+ end
78
+
79
+ def on_moved(event)
80
+ case event.unit
81
+ when :month
82
+ @display = @display >> event.amount
83
+ event.update_element(self)
84
+ end
85
+ end
86
+
87
+ def on_changed(event)
88
+ @value = event.value
89
+ event.update_element(self)
90
+ changed(event)
91
+ end
92
+
93
+ end
94
+
95
+ end
96
+
97
+ end
98
+
99
+ end
100
+
101
+ end
@@ -0,0 +1,27 @@
1
+ require 'rubygems'
2
+ require 'bundler/setup'
3
+
4
+ require 'ruby-event'
5
+
6
+ module RubyApp
7
+
8
+ module Elements
9
+
10
+ module Calendars
11
+ require 'ruby_app/elements/calendars/base/base_month'
12
+
13
+ class Month < RubyApp::Elements::Calendars::Base::BaseMonth
14
+
15
+ template_path(:all, File.dirname(__FILE__))
16
+
17
+ def initialize
18
+ super
19
+ end
20
+
21
+ end
22
+
23
+ end
24
+
25
+ end
26
+
27
+ end
@@ -0,0 +1,10 @@
1
+ - self.rendered?(__FILE__) do
2
+ :plain
3
+ // #{__FILE__}
4
+ $(document).ready(function() {
5
+ $('.click').live('click', function(event) {
6
+ event.preventDefault();
7
+ RubyApp.sendEvent({_class:'RubyApp::Elements::Click::ClickedEvent', source_id:$(this).attr('id')});
8
+ });
9
+ });
10
+ = yield
@@ -0,0 +1,44 @@
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 Click < RubyApp::Element
12
+
13
+ class ClickedEvent < RubyApp::Element::Event
14
+
15
+ def initialize(data)
16
+ super(data)
17
+ end
18
+
19
+ end
20
+
21
+ template_path(:all, File.dirname(__FILE__))
22
+
23
+ event :clicked
24
+
25
+ def initialize
26
+ super
27
+ end
28
+
29
+ protected
30
+
31
+ def on_event(event)
32
+ on_clicked(event) if event.is_a?(RubyApp::Elements::Click::ClickedEvent)
33
+ super(event)
34
+ end
35
+
36
+ def on_clicked(event)
37
+ clicked(event)
38
+ end
39
+
40
+ end
41
+
42
+ end
43
+
44
+ end
@@ -0,0 +1,23 @@
1
+ require 'rubygems'
2
+ require 'bundler/setup'
3
+
4
+ require 'ruby-event'
5
+
6
+ module RubyApp
7
+
8
+ module Elements
9
+ require 'ruby_app/elements/base/base_dialog'
10
+
11
+ class Dialog < RubyApp::Elements::Base::BaseDialog
12
+
13
+ template_path(:all, File.dirname(__FILE__))
14
+
15
+ def initialize
16
+ super
17
+ end
18
+
19
+ end
20
+
21
+ end
22
+
23
+ end
@@ -0,0 +1,9 @@
1
+ - self.rendered?(__FILE__) do
2
+ :sass
3
+ /* #{__FILE__}
4
+ body
5
+ > div.overlay
6
+ > div.dialog
7
+ > div.image
8
+ float: left
9
+ = yield
@@ -0,0 +1,7 @@
1
+ - self.content_for(:body) do
2
+ /
3
+ #{__FILE__}
4
+ %div.image
5
+ %img{:src => '/ruby_app/resources/elements/dialogs/base/base_busy_dialog.gif'}
6
+ %div.content
7
+ = @message
@@ -0,0 +1,27 @@
1
+ module RubyApp
2
+
3
+ module Elements
4
+
5
+ module Dialogs
6
+
7
+ module Base
8
+ require 'ruby_app/elements/dialog'
9
+
10
+ class BaseBusyDialog < RubyApp::Elements::Dialog
11
+
12
+ template_path(:all, File.dirname(__FILE__))
13
+
14
+ def initialize(message)
15
+ super()
16
+ @message = message
17
+ end
18
+
19
+ end
20
+
21
+ end
22
+
23
+ end
24
+
25
+ end
26
+
27
+ end
@@ -0,0 +1,11 @@
1
+ - self.rendered?(__FILE__) do
2
+ :sass
3
+ /* #{__FILE__}
4
+ body
5
+ > div.overlay
6
+ > div.dialog
7
+ > div.footer
8
+ text-align: right
9
+ width: 100%
10
+ = RubyApp::Elements::Link.render(:css)
11
+ = yield