netzke-core 0.7.7 → 0.8.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (192) hide show
  1. data/.travis.yml +1 -2
  2. data/CHANGELOG.md +572 -0
  3. data/LICENSE +7 -1
  4. data/README.md +345 -29
  5. data/Rakefile +3 -3
  6. data/app/controllers/netzke_controller.rb +37 -48
  7. data/config/ci/before-travis.sh +3 -4
  8. data/javascripts/base.js +86 -150
  9. data/javascripts/ext.js +180 -210
  10. data/javascripts/{core_extensions.js → js_extensions.js} +0 -0
  11. data/lib/netzke-core.rb +16 -6
  12. data/lib/netzke/base.rb +84 -107
  13. data/lib/netzke/core.rb +7 -41
  14. data/lib/netzke/core/action_config.rb +37 -0
  15. data/lib/netzke/core/actions.rb +123 -0
  16. data/lib/netzke/core/client_class.rb +252 -0
  17. data/lib/netzke/core/component_config.rb +12 -0
  18. data/lib/netzke/core/composition.rb +274 -0
  19. data/lib/netzke/core/config_to_dsl_delegator.rb +69 -0
  20. data/lib/netzke/core/configuration.rb +63 -0
  21. data/lib/netzke/core/css_config.rb +51 -0
  22. data/lib/netzke/core/dynamic_assets.rb +19 -49
  23. data/lib/netzke/{embedding.rb → core/embedding.rb} +4 -6
  24. data/lib/netzke/core/endpoint_response.rb +15 -0
  25. data/lib/netzke/core/javascript.rb +111 -0
  26. data/lib/netzke/core/panel.rb +11 -0
  27. data/lib/netzke/{plugins.rb → core/plugins.rb} +10 -5
  28. data/lib/netzke/core/railz.rb +4 -0
  29. data/lib/netzke/{railz → core/railz}/action_view_ext.rb +22 -18
  30. data/lib/netzke/core/railz/action_view_ext/ext.rb +49 -0
  31. data/lib/netzke/core/railz/controller_extensions.rb +17 -0
  32. data/lib/netzke/core/railz/engine.rb +16 -0
  33. data/lib/netzke/core/railz/routes.rb +10 -0
  34. data/lib/netzke/core/ruby_ext.rb +5 -0
  35. data/lib/netzke/core/ruby_ext/array.rb +23 -0
  36. data/lib/netzke/core/ruby_ext/hash.rb +47 -0
  37. data/lib/netzke/{core_ext → core/ruby_ext}/string.rb +2 -7
  38. data/lib/netzke/core/ruby_ext/symbol.rb +13 -0
  39. data/lib/netzke/{core_ext → core/ruby_ext}/time_with_zone.rb +0 -0
  40. data/lib/netzke/core/services.rb +130 -0
  41. data/lib/netzke/core/session.rb +15 -19
  42. data/lib/netzke/core/state.rb +40 -0
  43. data/lib/netzke/core/stylesheets.rb +48 -0
  44. data/lib/netzke/core/version.rb +2 -2
  45. data/lib/netzke/plugin.rb +8 -11
  46. data/netzke-core.gemspec +69 -59
  47. data/test/core_test_app/Gemfile +2 -20
  48. data/test/core_test_app/Gemfile.lock +65 -74
  49. data/test/core_test_app/app/components/card_component_loader.rb +4 -4
  50. data/test/core_test_app/app/components/component_loader.rb +40 -120
  51. data/test/core_test_app/app/components/component_loader/javascripts/component_loader.js +49 -0
  52. data/test/core_test_app/app/components/component_with_actions.rb +61 -47
  53. data/test/core_test_app/app/components/component_with_custom_css.rb +8 -5
  54. data/test/core_test_app/app/components/component_with_js_mixin.rb +11 -5
  55. data/test/core_test_app/app/components/component_with_js_mixin/javascripts/extra_one.js +1 -1
  56. data/test/core_test_app/app/components/component_with_js_mixin/javascripts/extra_two.js +1 -1
  57. data/test/core_test_app/app/components/component_with_js_mixin/javascripts/method_set_one.js +1 -1
  58. data/test/core_test_app/app/components/component_with_nested_through.rb +2 -2
  59. data/test/core_test_app/app/components/component_with_prebuilt_toolbar_control.rb +12 -0
  60. data/test/core_test_app/app/components/component_with_prebuilt_toolbar_control/javascripts/component_with_prebuilt_toolbar_control.js +12 -0
  61. data/test/core_test_app/app/components/component_with_required_js.rb +24 -0
  62. data/test/core_test_app/app/components/configurable_on_class_level.rb +8 -0
  63. data/test/core_test_app/app/components/dsl_delegated_properties.rb +4 -0
  64. data/test/core_test_app/app/components/dsl_delegated_properties_base.rb +5 -0
  65. data/test/core_test_app/app/components/dynamic_tab_panel/javascripts/dynamic_tab_panel.js +2 -2
  66. data/test/core_test_app/app/components/ext_direct/composite.rb +32 -33
  67. data/test/core_test_app/app/components/ext_direct/details.rb +2 -4
  68. data/test/core_test_app/app/components/ext_direct/selector.rb +20 -22
  69. data/test/core_test_app/app/components/ext_direct/statistics.rb +2 -4
  70. data/test/core_test_app/app/components/extended_component_with_actions.rb +7 -3
  71. data/test/core_test_app/app/components/extended_component_with_js_mixin.rb +7 -4
  72. data/test/core_test_app/app/components/extended_component_with_js_mixin/javascripts/some_method_set.js +1 -1
  73. data/test/core_test_app/app/components/extended_server_caller.rb +20 -14
  74. data/test/core_test_app/app/components/hello_world.rb +23 -0
  75. data/test/core_test_app/app/components/hello_world/javascripts/hello_world.js +12 -0
  76. data/test/core_test_app/app/components/included.js +2 -2
  77. data/test/core_test_app/app/components/kinda_complex_component.rb +1 -3
  78. data/test/core_test_app/app/components/kinda_complex_component/basic_stuff.rb +15 -17
  79. data/test/core_test_app/app/components/kinda_complex_component/extra_stuff.rb +4 -5
  80. data/test/core_test_app/app/components/loader_of_component_with_custom_css.rb +14 -5
  81. data/test/core_test_app/app/components/localized_panel.rb +23 -25
  82. data/test/core_test_app/app/components/multipane_component_loader.rb +19 -20
  83. data/test/core_test_app/app/components/nested_component.rb +4 -5
  84. data/test/core_test_app/app/components/panel_with_plugin.rb +8 -3
  85. data/test/core_test_app/app/components/panel_with_tools.rb +15 -14
  86. data/test/core_test_app/app/components/plugin_with_components.rb +20 -12
  87. data/test/core_test_app/app/components/scoped_components/deep_scoped_components/some_deep_scoped_component.rb +5 -2
  88. data/test/core_test_app/app/components/scoped_components/extended_scoped_component.rb +5 -2
  89. data/test/core_test_app/app/components/scoped_components/some_scoped_component.rb +5 -2
  90. data/test/core_test_app/app/components/server_caller.rb +39 -17
  91. data/test/core_test_app/app/components/server_caller/javascripts/server_caller.js +42 -0
  92. data/test/core_test_app/app/components/server_counter.rb +18 -82
  93. data/test/core_test_app/app/components/server_counter/javascripts/server_counter.js +53 -0
  94. data/test/core_test_app/app/components/simple_authentication_component.rb +46 -0
  95. data/test/core_test_app/app/components/simple_component.rb +8 -3
  96. data/test/core_test_app/app/components/simple_composite.rb +12 -0
  97. data/test/core_test_app/app/components/simple_form_with_file_upload.rb +49 -0
  98. data/test/core_test_app/app/components/simple_panel.rb +2 -2
  99. data/test/core_test_app/app/components/simple_tab_panel.rb +24 -3
  100. data/test/core_test_app/app/components/simple_window.rb +4 -2
  101. data/test/core_test_app/app/components/some_composite.rb +77 -48
  102. data/test/core_test_app/app/components/some_plugin.rb +31 -30
  103. data/test/core_test_app/app/components/stateful_component.rb +46 -0
  104. data/test/core_test_app/app/components/stateful_component_with_shared_state.rb +11 -0
  105. data/test/core_test_app/app/components/window_with_simple_component.rb +14 -0
  106. data/test/core_test_app/app/views/layouts/application.html.erb +1 -1
  107. data/test/core_test_app/app/views/simple_rails/multiple_nested.html.erb +7 -19
  108. data/test/core_test_app/app/views/simple_rails/panel.html.erb +1 -0
  109. data/test/core_test_app/config/database.yml.travis +3 -5
  110. data/test/core_test_app/config/environments/production.rb +1 -1
  111. data/test/core_test_app/config/initializers/netzke.rb +3 -1
  112. data/test/core_test_app/config/locales/en.yml +9 -4
  113. data/test/core_test_app/config/locales/es.yml +4 -2
  114. data/test/core_test_app/config/routes.rb +2 -8
  115. data/test/core_test_app/db/schema.rb +3 -11
  116. data/test/core_test_app/features/actions_and_tools.feature +1 -0
  117. data/test/core_test_app/features/client-server.feature +7 -0
  118. data/test/core_test_app/features/component_loader.feature +13 -13
  119. data/test/core_test_app/features/composition.feature +14 -0
  120. data/test/core_test_app/features/config_to_dsl_delegation.feature +10 -0
  121. data/test/core_test_app/features/file_inclusion.feature +1 -1
  122. data/test/core_test_app/features/i18n.feature +4 -4
  123. data/test/core_test_app/features/js_include.feature +1 -1
  124. data/test/core_test_app/features/persistence.feature +21 -5
  125. data/test/core_test_app/features/step_definitions/generic_steps.rb +14 -0
  126. data/test/core_test_app/features/support/paths.rb +0 -3
  127. data/test/core_test_app/public/images/icons/accept.png +0 -0
  128. data/test/core_test_app/public/images/icons/anchor.png +0 -0
  129. data/test/core_test_app/public/images/icons/tick.png +0 -0
  130. data/test/core_test_app/spec/action_config_spec.rb +15 -0
  131. data/test/core_test_app/spec/{component/actions_spec.rb → actions_spec.rb} +38 -36
  132. data/test/core_test_app/spec/base_spec.rb +35 -0
  133. data/test/core_test_app/spec/client_class_spec.rb +17 -0
  134. data/test/core_test_app/spec/component +0 -0
  135. data/test/core_test_app/spec/composition_spec.rb +118 -0
  136. data/test/core_test_app/spec/core_ext_spec.rb +3 -14
  137. data/test/core_test_app/spec/endpoint_response_spec.rb +17 -0
  138. data/test/core_test_app/spec/javascript_spec.rb +33 -0
  139. data/test/core_test_app/spec/js_class_config_scope.rb +37 -0
  140. data/test/core_test_app/spec/panel_spec.rb +11 -0
  141. data/test/core_test_app/spec/services_spec.rb +16 -0
  142. data/test/core_test_app/spec/state_spec.rb +20 -0
  143. data/test/unit/core_ext_test.rb +0 -53
  144. data/test/unit/netzke_core_test.rb +11 -11
  145. metadata +76 -62
  146. data/CHANGELOG.rdoc +0 -325
  147. data/javascripts/touch.js +0 -58
  148. data/lib/netzke/actions.rb +0 -107
  149. data/lib/netzke/composition.rb +0 -224
  150. data/lib/netzke/config_to_dsl_delegator.rb +0 -43
  151. data/lib/netzke/configuration.rb +0 -195
  152. data/lib/netzke/core/masquerading.rb +0 -34
  153. data/lib/netzke/core_ext.rb +0 -6
  154. data/lib/netzke/core_ext/array.rb +0 -30
  155. data/lib/netzke/core_ext/hash.rb +0 -86
  156. data/lib/netzke/core_ext/symbol.rb +0 -21
  157. data/lib/netzke/ext_component.rb +0 -25
  158. data/lib/netzke/inheritance.rb +0 -31
  159. data/lib/netzke/javascript.rb +0 -382
  160. data/lib/netzke/javascript/scopes.rb +0 -39
  161. data/lib/netzke/railz.rb +0 -4
  162. data/lib/netzke/railz/action_view_ext/ext.rb +0 -64
  163. data/lib/netzke/railz/action_view_ext/touch.rb +0 -52
  164. data/lib/netzke/railz/controller_extensions.rb +0 -33
  165. data/lib/netzke/railz/engine.rb +0 -48
  166. data/lib/netzke/railz/routes.rb +0 -7
  167. data/lib/netzke/services.rb +0 -101
  168. data/lib/netzke/session.rb +0 -54
  169. data/lib/netzke/state.rb +0 -91
  170. data/lib/netzke/stylesheets.rb +0 -65
  171. data/test/core_test_app/app/components/component_with_included_js.rb +0 -16
  172. data/test/core_test_app/app/components/component_with_session_persistence.rb +0 -35
  173. data/test/core_test_app/app/components/deprecated/server_caller.rb +0 -20
  174. data/test/core_test_app/app/components/dynamic_tab_panel.rb +0 -19
  175. data/test/core_test_app/app/components/hello_world_component.rb +0 -31
  176. data/test/core_test_app/app/components/touch/hello_world_component.rb +0 -25
  177. data/test/core_test_app/app/components/touch/server_caller.rb +0 -28
  178. data/test/core_test_app/app/components/touch/simple_carousel.rb +0 -17
  179. data/test/core_test_app/app/controllers/touch_controller.rb +0 -6
  180. data/test/core_test_app/app/helpers/touch_helper.rb +0 -2
  181. data/test/core_test_app/app/views/layouts/touch.html.erb +0 -13
  182. data/test/core_test_app/db/migrate/20110110132720_create_netzke_component_states.rb +0 -20
  183. data/test/core_test_app/features/step_definitions/touch_steps.rb +0 -3
  184. data/test/core_test_app/features/touch.feature +0 -10
  185. data/test/core_test_app/gemfiles/rails3_1.gemfile +0 -16
  186. data/test/core_test_app/gemfiles/rails3_2.gemfile +0 -16
  187. data/test/core_test_app/spec/component/base_spec.rb +0 -36
  188. data/test/core_test_app/spec/component/component_spec.rb +0 -20
  189. data/test/core_test_app/spec/component/composition_spec.rb +0 -132
  190. data/test/core_test_app/spec/component/configuration_spec.rb +0 -61
  191. data/test/core_test_app/spec/component/javascript_spec.rb +0 -16
  192. data/test/core_test_app/spec/component/state_spec.rb +0 -18
@@ -0,0 +1,12 @@
1
+ class ComponentWithPrebuiltToolbarControl < Netzke::Base
2
+ js_configure do |c|
3
+ c.mixin
4
+ end
5
+
6
+ action :some_action
7
+
8
+ def configure(c)
9
+ super
10
+ c.bbar = [ :some_action, "Date:", :prebuilt_control ]
11
+ end
12
+ end
@@ -0,0 +1,12 @@
1
+ {
2
+ prebuiltControlConfig: function(config){
3
+ return {
4
+ xtype: 'datefield',
5
+ listeners: {
6
+ select: function(){
7
+ this.netzkeParent.body.update('Hi');
8
+ }
9
+ }
10
+ }
11
+ }
12
+ }
@@ -0,0 +1,24 @@
1
+ class ComponentWithRequiredJs < Netzke::Base
2
+ class_attribute :title
3
+ self.title = "My title"
4
+
5
+ js_configure do |c|
6
+ c.require "#{File.dirname(__FILE__)}/included.js"
7
+ c.extend = "Netzke.ComponentWithRequiredJs" # defined in required file
8
+ c.on_print_message = <<-JS
9
+ function(){
10
+ this.updateBodyWithMessage("Some message " + "shown in the body");
11
+ }
12
+ JS
13
+
14
+ c.active_tab = 0
15
+ c.title = title
16
+ end
17
+
18
+ action :print_message
19
+
20
+ def configure(c)
21
+ super
22
+ c.bbar = [:print_message]
23
+ end
24
+ end
@@ -0,0 +1,8 @@
1
+ class ConfigurableOnClassLevel < Netzke::Base
2
+ class_attribute :title
3
+ self.title = "Default"
4
+
5
+ js_configure do |c|
6
+ c.title = self.title
7
+ end
8
+ end
@@ -0,0 +1,4 @@
1
+ class DslDelegatedProperties < DslDelegatedPropertiesBase
2
+ title "Title set via DSL"
3
+ html "HTML set via DSL"
4
+ end
@@ -0,0 +1,5 @@
1
+ class DslDelegatedPropertiesBase < Netzke::Base
2
+ include Netzke::Core::ConfigToDslDelegator
3
+
4
+ delegates_to_dsl :title, :html
5
+ end
@@ -1,9 +1,9 @@
1
1
  {
2
2
  activeTab: 0,
3
3
  onAddTab: function() {
4
- this.loadNetzkeComponent({name: 'tab_two', callback: function(cmp) {
4
+ this.netzkeLoadComponent({name: 'tab_two', callback: function(cmp) {
5
5
  this.add(cmp);
6
6
  this.setActiveTab(cmp);
7
7
  }});
8
8
  }
9
- }
9
+ }
@@ -1,48 +1,47 @@
1
1
  module ExtDirect
2
2
  class Composite < Netzke::Base
3
- js_property :layout, :border
4
- js_property :border, true
3
+ js_configure do |c|
4
+ c.layout = :border
5
+ c.border = true
6
+ c.init_component = <<-JS
7
+ function(){
8
+ this.callParent();
9
+
10
+ this.netzkeGetComponent('selector').on('userupdate', function(user){
11
+ this.setUser(user);
12
+ this.netzkeGetComponent('details').update();
13
+ this.netzkeGetComponent('statistics').update();
14
+ }, this);
15
+ }
16
+ JS
17
+ end
5
18
 
6
- component :selector, :class_name => "ExtDirect::Selector" # a form that will allow us to select a user
19
+ component :selector do |c|
20
+ c.klass = ExtDirect::Selector # a form that will allow us to select a user
21
+ end
7
22
 
8
- component :details do
9
- {
10
- :class_name => "ExtDirect::Details", # a panel that will display details for the user
11
- :user => component_session[:user]
12
- }
23
+ component :details do |c|
24
+ c.klass = ExtDirect::Details # a panel that will display details for the user
25
+ c.user = component_session[:user]
13
26
  end
14
27
 
15
- component :statistics do
16
- {
17
- :class_name => "ExtDirect::Statistics", # a panel that will display details for the user
18
- :user => component_session[:user]
19
- }
28
+ component :statistics do |c|
29
+ c.klass = ExtDirect::Statistics # a panel that will display statistics for the user
30
+ c.user = component_session[:user]
20
31
  end
21
32
 
22
- def configuration
23
- super.merge({
24
- :items => [:selector.component(:region => :north, :height => 100),
25
- :details.component(:region => :center),
26
- :statistics.component(:region => :east, :width => 300, :split => true)
27
- ]
28
- })
33
+ def configure(c)
34
+ super
35
+ c.items = [
36
+ {:region => :north, :height => 100, component: :selector},
37
+ {:region => :center, component: :details},
38
+ {:region => :east, :width => 300, :split => true, component: :statistics}
39
+ ]
29
40
  end
30
41
 
31
- endpoint :set_user do |params|
42
+ endpoint :set_user do |params, this|
32
43
  component_session[:user] = params
33
44
  end
34
45
 
35
- js_method :init_component, <<-JS
36
- function(){
37
- Netzke.classes.ExtDirect.Composite.superclass.initComponent.call(this);
38
-
39
- this.getChildComponent('selector').on('userupdate', function(user){
40
- this.setUser(user);
41
- this.getChildComponent('details').update();
42
- this.getChildComponent('statistics').update();
43
- }, this);
44
- }
45
- JS
46
-
47
46
  end
48
47
  end
@@ -1,9 +1,7 @@
1
1
  module ExtDirect
2
2
  class Details < Netzke::Base
3
- js_property :padding, 5
4
-
5
- endpoint :update do |params|
6
- {:set_title => title}
3
+ endpoint :update do |params, this|
4
+ this.set_title title
7
5
  end
8
6
 
9
7
  def title
@@ -1,31 +1,29 @@
1
1
  module ExtDirect
2
2
  class Selector < Netzke::Base
3
- js_base_class "Ext.FormPanel"
3
+ js_configure do |c|
4
+ c.extend = "Ext.FormPanel"
5
+ c.body_padding = 5
4
6
 
5
- js_property :padding, 5
7
+ c.init_component = <<-JS
8
+ function(){
9
+ this.callParent();
10
+ this.addEvents('userupdate');
11
+ }
12
+ JS
6
13
 
7
- action :update
8
-
9
- def configuration
10
- super.merge({
11
- :items => [{:name => "user", :field_label => "User", :xtype => :textfield}],
12
- :bbar => [:update.action]
13
- })
14
+ c.on_update = <<-JS
15
+ function(){
16
+ this.fireEvent('userupdate', this.getForm().findField('user').getValue());
17
+ }
18
+ JS
14
19
  end
15
20
 
16
- js_method :init_component, <<-JS
17
- function(){
18
- Netzke.classes.ExtDirect.Selector.superclass.initComponent.call(this);
19
- this.addEvents('userupdate');
20
- }
21
- JS
22
-
23
-
24
- js_method :on_update, <<-JS
25
- function(){
26
- this.fireEvent('userupdate', this.getForm().findField('user').getValue());
27
- }
28
- JS
21
+ action :update
29
22
 
23
+ def configure(c)
24
+ super
25
+ c.items = [{:name => "user", :field_label => "User", :xtype => :textfield}]
26
+ c.bbar = [:update]
27
+ end
30
28
  end
31
29
  end
@@ -1,9 +1,7 @@
1
1
  module ExtDirect
2
2
  class Statistics < Netzke::Base
3
- js_property :padding, 5
4
-
5
- endpoint :update do |params|
6
- {:set_title => title}
3
+ endpoint :update do |params, this|
4
+ this.set_title title
7
5
  end
8
6
 
9
7
  def title
@@ -1,5 +1,9 @@
1
1
  class ExtendedComponentWithActions < ComponentWithActions
2
- js_property :bbar, [:another_action.action]
2
+ js_property :bbar, [:another_action]
3
3
 
4
- action :some_action, :icon => :tick
5
- end
4
+ # Override actions like this
5
+ def some_action_action(a)
6
+ super
7
+ a.icon = :tick
8
+ end
9
+ end
@@ -1,7 +1,10 @@
1
1
  class ExtendedComponentWithJsMixin < ComponentWithJsMixin
2
- js_mixin :some_method_set
3
- action :action_three
2
+ js_configure do |c|
3
+ c.mixin :some_method_set
4
+ end
4
5
 
5
- js_property :title, "ExtendedComponentWithJsMixin"
6
- js_property :bbar, superclass.js_properties[:bbar] + [:action_three.action]
6
+ def configure(c)
7
+ super
8
+ c.title = "ExtendedComponentWithJsMixin"
9
+ end
7
10
  end
@@ -1,5 +1,5 @@
1
1
  {
2
2
  onActionThree: function() {
3
- this.setTitle("Action " + "Three triggered!");
3
+ this.setTitle("Modified action " + "Three triggered!");
4
4
  }
5
5
  }
@@ -1,19 +1,25 @@
1
1
  class ExtendedServerCaller < ServerCaller
2
- title "Extended Server Caller"
2
+ def configure(c)
3
+ super
4
+ c.title = "Extended Server Caller"
5
+ end
3
6
 
4
- js_method :on_bug_server, <<-JS
5
- function(){
6
- this.callParent();
7
- var bottomBar = this.getDockedItems()[1] || this.getDockedItems()[0]; // Hacky-hacky... better way to surely get the bottom bar?
8
- bottomBar.add({text: "Added" + " by extended Server Caller"});
9
- }
10
- JS
11
7
 
12
- # Overriding the :whats_up endpoint from ServerCaller
13
- def whats_up_endpoint(params)
14
- super.tap do |s|
15
- s[:set_title] = s[:set_title] + ", shiny weather"
16
- end
8
+
9
+ js_configure do |c|
10
+ c.on_bug_server = <<-JS
11
+ function(){
12
+ this.callParent();
13
+ var bottomBar = this.getDockedItems()[1] || this.getDockedItems()[0]; // Hacky-hacky... better way to surely get the bottom bar?
14
+ bottomBar.add({text: "Added" + " by extended Server Caller"});
15
+ }
16
+ JS
17
17
  end
18
18
 
19
- end
19
+ # Overriding the :whats_up endpoint from ServerCaller
20
+ endpoint :whats_up do |params, this|
21
+ super(params, this)
22
+
23
+ this.set_title(this.set_title[0] + ", shiny weather")
24
+ end
25
+ end
@@ -0,0 +1,23 @@
1
+ class HelloWorld < Netzke::Base
2
+ # Configure clint class
3
+ js_configure do |c|
4
+ c.title = "Hello World component"
5
+ c.mixin # mix in methods from hello_world/javascripts/hello_world.js
6
+ end
7
+
8
+ # Actions are used by Ext JS to share functionality and state b/w buttons and menu items
9
+ # The handler for this action should be called onPingServer by default
10
+ action :ping_server
11
+
12
+ # Self-configure with a bottom toolbar
13
+ def configure(c)
14
+ super
15
+ c.bbar = [:ping_server] # embed the action into bottom toolbar
16
+ end
17
+
18
+ # Endpoint callable from client class
19
+ endpoint :greet_the_world do |params,this|
20
+ # call client class' method showGreeting
21
+ this.show_greeting("Hello World!")
22
+ end
23
+ end
@@ -0,0 +1,12 @@
1
+ {
2
+ // handler for the ping_server action
3
+ onPingServer: function(){
4
+ // calling greet_the_world endpoint
5
+ this.greetTheWorld();
6
+ },
7
+
8
+ // called by the server as the result of executing the endpoint
9
+ showGreeting: function(greeting){
10
+ this.update("Server says: " + greeting);
11
+ }
12
+ }
@@ -1,5 +1,5 @@
1
- Netzke.ComponentWithIncludedJs = Ext.extend(Ext.panel.Panel, {
1
+ Netzke.ComponentWithRequiredJs = Ext.extend(Ext.panel.Panel, {
2
2
  updateBodyWithMessage: function(message) {
3
3
  this.body.update(message);
4
4
  }
5
- });
5
+ });
@@ -1,7 +1,5 @@
1
1
  # This is an example of dividing component's code into modules. Use it to build complex components.
2
2
  class KindaComplexComponent < Netzke::Base
3
- js_base_class "Ext.TabPanel"
4
-
5
3
  include BasicStuff
6
4
  include ExtraStuff
7
- end
5
+ end
@@ -7,29 +7,27 @@ class KindaComplexComponent < Netzke::Base
7
7
  action :some_action
8
8
  action :another_action
9
9
 
10
- # Calling main class' methods is simple
11
- js_method :on_some_action, <<-JS
12
- function(){ this.items.last().setTitle("Action triggered"); }
13
- JS
10
+ js_configure do |c|
11
+ c.extend = "Ext.tab.Panel"
12
+ c.active_tab = 0
14
13
 
15
- # Another way of defining a JS method
16
- js_method :on_another_action do
17
- <<-JS
14
+ # Calling main class' methods is simple
15
+ c.on_some_action = <<-JS
16
+ function(){ this.items.last().setTitle("Action triggered"); }
17
+ JS
18
+
19
+ # Another way of defining a JS method
20
+ c.on_another_action = <<-JS
18
21
  function(){ this.items.first().setTitle("Another action triggered"); }
19
22
  JS
20
23
  end
21
-
22
- js_properties(
23
- :active_tab => 0, :bbar => [:some_action.action, :another_action.action]
24
- )
25
-
26
- # Instance method, overridden in the ExtraStuff module
27
- # config
28
24
  end
29
25
 
30
- def final_config
31
- super.merge(:items => [{:title => "Panel One"}, {:title => "Panel Two"}])
26
+ def configure(c)
27
+ super
28
+ c.bbar = [:some_action, :another_action]
29
+ c.items = [{:title => "Panel One"}, {:title => "Panel Two"}]
32
30
  end
33
31
 
34
32
  end
35
- end
33
+ end
@@ -7,10 +7,9 @@ class KindaComplexComponent < Netzke::Base
7
7
  end
8
8
 
9
9
  # Let's add another tab with a Netzke component in it
10
- def final_config
11
- orig = super
12
- orig[:items] << :server_caller.component
13
- orig
10
+ def configure(c)
11
+ super
12
+ c.items += [{ component: :server_caller }]
14
13
  end
15
14
  end
16
- end
15
+ end