netzke-core 0.6.2 → 0.6.3

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 (73) hide show
  1. data/CHANGELOG.rdoc +9 -6
  2. data/README.rdoc +14 -15
  3. data/Rakefile +20 -15
  4. data/TODO +1 -1
  5. data/app/controllers/netzke_controller.rb +9 -9
  6. data/app/models/netzke_preference.rb +27 -27
  7. data/features/actions.feature +1 -1
  8. data/features/basic.feature +1 -1
  9. data/features/client-server.feature +1 -1
  10. data/features/component_loader.feature +6 -7
  11. data/features/composition.feature +5 -6
  12. data/features/custom_css.feature +1 -1
  13. data/features/inheritance.feature +0 -1
  14. data/features/persistence.feature +3 -3
  15. data/features/scopes.feature +3 -3
  16. data/features/step_definitions/web_steps.rb +5 -5
  17. data/features/support/env.rb +6 -6
  18. data/generators/netzke_core/netzke_core_generator.rb +2 -2
  19. data/javascripts/core.js +43 -43
  20. data/lib/generators/migration_helper.rb +6 -6
  21. data/lib/generators/netzke/USAGE +2 -3
  22. data/lib/generators/netzke/core_generator.rb +7 -7
  23. data/lib/netzke/actions.rb +18 -18
  24. data/lib/netzke/base.rb +72 -85
  25. data/lib/netzke/composition.rb +30 -30
  26. data/lib/netzke/configuration.rb +15 -15
  27. data/lib/netzke/core/masquerading.rb +3 -3
  28. data/lib/netzke/core/session.rb +1 -1
  29. data/lib/netzke/core/version.rb +1 -1
  30. data/lib/netzke/core.rb +9 -9
  31. data/lib/netzke/core_ext/array.rb +5 -5
  32. data/lib/netzke/core_ext/hash.rb +7 -7
  33. data/lib/netzke/core_ext/string.rb +4 -4
  34. data/lib/netzke/core_ext/symbol.rb +3 -3
  35. data/lib/netzke/embedding.rb +2 -2
  36. data/lib/netzke/ext_component.rb +4 -4
  37. data/lib/netzke/javascript.rb +36 -25
  38. data/lib/netzke/persistence.rb +16 -16
  39. data/lib/netzke/rails/action_view_ext.rb +20 -20
  40. data/lib/netzke/rails/controller_extensions.rb +1 -1
  41. data/lib/netzke/rails/routes.rb +1 -1
  42. data/lib/netzke/services.rb +12 -12
  43. data/lib/netzke/session.rb +4 -4
  44. data/lib/netzke/stylesheets.rb +8 -8
  45. data/lib/netzke-core.rb +2 -2
  46. data/netzke-core.gemspec +4 -5
  47. data/spec/component/actions_spec.rb +18 -18
  48. data/spec/component/base_spec.rb +6 -6
  49. data/spec/component/composition_spec.rb +12 -12
  50. data/spec/component/javascript_spec.rb +2 -2
  51. data/spec/core_ext_spec.rb +3 -3
  52. data/templates/core/create_netzke_preferences.rb +1 -1
  53. data/test/rails_app/app/components/component_loader.rb +8 -8
  54. data/test/rails_app/app/components/component_with_actions.rb +9 -9
  55. data/test/rails_app/app/components/component_with_custom_css.rb +2 -2
  56. data/test/rails_app/app/components/component_with_included_js.rb +5 -5
  57. data/test/rails_app/app/components/component_with_session_persistence.rb +3 -3
  58. data/test/rails_app/app/components/deprecated/server_caller.rb +2 -2
  59. data/test/rails_app/app/components/extended_component_with_actions.rb +1 -1
  60. data/test/rails_app/app/components/extended_server_caller.rb +3 -3
  61. data/test/rails_app/app/components/kinda_complex_component/basic_stuff.rb +8 -8
  62. data/test/rails_app/app/components/kinda_complex_component/extra_stuff.rb +2 -2
  63. data/test/rails_app/app/components/loader_of_component_with_custom_css.rb +2 -2
  64. data/test/rails_app/app/components/server_caller.rb +3 -3
  65. data/test/rails_app/app/components/simple_component.rb +1 -1
  66. data/test/rails_app/app/components/simple_tab_panel.rb +2 -2
  67. data/test/rails_app/app/components/some_composite.rb +16 -16
  68. data/test/rails_app/config/routes.rb +2 -2
  69. data/test/test_helper.rb +1 -1
  70. data/test/unit/core_ext_test.rb +13 -13
  71. data/test/unit/netzke_core_test.rb +20 -20
  72. data/test/unit/netzke_preference_test.rb +12 -12
  73. metadata +6 -6
@@ -3,7 +3,7 @@ module Netzke
3
3
  # Here's a brief explanation on how a javascript class for a component gets built.
4
4
  # Component gets defined as a constructor (a function) by +js_class+ class method (see "Inside component's contstructor").
5
5
  # +Ext.extend+ provides inheritance from an Ext class specified in +js_base_class+ class method.
6
- #
6
+ #
7
7
  # == Inside component's constructor
8
8
  # * Component's constructor gets called with a parameter that is a configuration object provided by +config+ instance method. This configuration is specific for the instance of the component, and, for example, contains this component's unique id. As another example, by means of this configuration object, a grid receives the configuration array for its columns, a form - for its fields, etc.
9
9
  module Javascript
@@ -13,14 +13,14 @@ module Netzke
13
13
  class_attribute :js_included_files
14
14
  self.js_included_files = []
15
15
  end
16
-
16
+
17
17
  module ClassMethods
18
18
 
19
19
  # The JS (Ext) class that we inherit from on the JS level
20
20
  def js_base_class(class_name = nil)
21
21
  class_name.nil? ? (read_inheritable_attribute(:js_base_class) || "Ext.Panel") : write_inheritable_attribute(:js_base_class, class_name)
22
22
  end
23
-
23
+
24
24
  # Definition of a public JS method, e.g.:
25
25
  # js_method :on_call_server, <<-JS
26
26
  # function(){
@@ -33,7 +33,7 @@ module Netzke
33
33
  current_js_methods.merge!(name => definition.l)
34
34
  write_inheritable_attribute(:js_methods, current_js_methods)
35
35
  end
36
-
36
+
37
37
  # Returns all JS method definitions in a hash
38
38
  def js_methods
39
39
  read_clean_inheritable_hash(:js_methods)
@@ -47,7 +47,7 @@ module Netzke
47
47
  def js_include(*args)
48
48
  self.js_included_files += args
49
49
  end
50
-
50
+
51
51
  # Definition of a public JS property, e.g.:
52
52
  # js_property :title, "My Netzke Component"
53
53
  def js_property(name, value = nil)
@@ -60,7 +60,7 @@ module Netzke
60
60
  write_inheritable_attribute(:js_properties, current_js_properties)
61
61
  end
62
62
  end
63
-
63
+
64
64
  # Assignment of multiple public JS properties in a bunch, e.g.:
65
65
  # js_properties :title => "My Component", :border => true, :html => "Inner HTML"
66
66
  def js_properties(hsh = nil)
@@ -72,7 +72,7 @@ module Netzke
72
72
  write_inheritable_attribute(:js_properties, current_js_properties)
73
73
  end
74
74
  end
75
-
75
+
76
76
  # JS properties and methods merged together
77
77
  def js_extend_properties
78
78
  @_js_extend_properties ||= js_properties.merge(js_methods)
@@ -82,13 +82,13 @@ module Netzke
82
82
  # res
83
83
  # end
84
84
  end
85
-
85
+
86
86
  # TODO: the code below needs refactoring and cleaning-up
87
-
87
+
88
88
  # component's menus
89
89
  # def js_menus; []; end
90
90
 
91
- # Given class name, e.g. GridPanelLib::Components::RecordFormWindow,
91
+ # Given class name, e.g. GridPanelLib::Components::RecordFormWindow,
92
92
  # returns its scope: "Components.RecordFormWindow"
93
93
  def js_class_name_to_scope(name)
94
94
  name.split("::")[0..-2].join(".")
@@ -129,7 +129,7 @@ module Netzke
129
129
  superclass != Netzke::Base
130
130
  end
131
131
 
132
- # Declaration of component's class (stored in the cache storage (Ext.netzke.cache) at the client side
132
+ # Declaration of component's class (stored in the cache storage (Ext.netzke.cache) at the client side
133
133
  # to be reused at the moment of component instantiation)
134
134
  def js_class(cached = [])
135
135
  res = []
@@ -142,29 +142,29 @@ module Netzke
142
142
 
143
143
  res.join("\n")
144
144
  end
145
-
146
-
145
+
146
+
147
147
  def js_extra_code
148
148
  ""
149
149
  end
150
-
150
+
151
151
  # Generates declaration of the JS class as direct extension of a Ext component
152
152
  def js_class_declaration_new_component
153
153
  %(#{js_full_class_name} = Ext.extend(#{js_base_class}, Ext.apply(Netzke.componentMixin(#{js_base_class}),
154
154
  #{js_extend_properties.to_nifty_json}));)
155
155
  end
156
-
156
+
157
157
  # Generates declaration of the JS class as extension of another Netzke component
158
158
  def js_class_declaration_extending_component
159
159
  base_class = superclass.js_full_class_name
160
160
 
161
- # Do we specify our own extend properties?
161
+ # Do we specify our own extend properties?
162
162
  # If so, include them, if not - don't re-include those from the parent.
163
163
  js_extend_properties.empty? ? \
164
164
  %{#{js_full_class_name} = #{base_class};} :
165
165
  %{#{js_full_class_name} = Ext.extend(#{base_class}, #{js_extend_properties.to_nifty_json});}
166
166
  end
167
-
167
+
168
168
  # Returns all extra JavaScript-code (as string) required by this component's class
169
169
  def js_included
170
170
  res = ""
@@ -175,7 +175,7 @@ module Netzke
175
175
  f = File.new(path)
176
176
  res << f.read << "\n"
177
177
  end
178
-
178
+
179
179
  res
180
180
  end
181
181
 
@@ -187,7 +187,7 @@ module Netzke
187
187
  def js_code(cached = [])
188
188
  [js_included, js_class(cached)].join("\n")
189
189
  end
190
-
190
+
191
191
  # Little helper
192
192
  def this; "this".l; end
193
193
 
@@ -195,7 +195,7 @@ module Netzke
195
195
  def null; "null".l; end
196
196
 
197
197
  end
198
-
198
+
199
199
  module InstanceMethods
200
200
  # Config that is used for instantiating the component in javascript
201
201
  def js_config
@@ -211,7 +211,7 @@ module Netzke
211
211
  comp_instance.before_load
212
212
  comp_hash[comp_name] = comp_instance.js_config
213
213
  end
214
-
214
+
215
215
  # All our non-lazy-loaded children are specified here, while in +items+ we barely reference them, because
216
216
  # +items+, generally, only contain a subset of all non-lazy-loaded children.
217
217
  res[:components] = comp_hash unless comp_hash.empty?
@@ -228,21 +228,32 @@ module Netzke
228
228
 
229
229
  # Merge with the rest of config options, besides those that are only meant for the server side
230
230
  res.merge!(config.reject{ |k,v| self.class.server_side_config_options.include?(k.to_sym) })
231
-
231
+
232
+ if config[:ext_config].present?
233
+ ::ActiveSupport::Deprecation.warn("Using ext_config option is deprecated. All config options must be specified at the same level in the hash.", caller)
234
+ res.merge!(config[:ext_config])
235
+ end
236
+
232
237
  res[:items] = items unless items.blank?
233
-
238
+
234
239
  res
235
240
  end
241
+
242
+ # Helper to access config[:ext_config] - DEPRECATED
243
+ def ext_config
244
+ ::ActiveSupport::Deprecation.warn("Using ext_config is deprecated. All config options must be specified at the same level in the hash.", caller)
245
+ config[:ext_config] || {}
246
+ end
236
247
 
237
248
  # All the JS-code required by this instance of the component to be instantiated in the browser.
238
249
  # It includes JS-classes for the parents, non-lazy-loaded child components, and itself.
239
250
  def js_missing_code(cached = [])
240
- code = dependency_classes.inject("") do |r,k|
251
+ code = dependency_classes.inject("") do |r,k|
241
252
  cached.include?(k.to_s) ? r : r + k.js_code(cached)#.strip_js_comments
242
253
  end
243
254
  code.blank? ? nil : code
244
255
  end
245
-
256
+
246
257
  end
247
258
  end
248
259
  end
@@ -1,8 +1,8 @@
1
1
  module Netzke
2
- # TODO:
2
+ # TODO:
3
3
  # rename persistence_ to persistence_
4
4
  module Persistence
5
-
5
+
6
6
  module ClassMethods
7
7
  # Persistent config manager class
8
8
  def persistence_manager_class
@@ -12,14 +12,14 @@ module Netzke
12
12
  end
13
13
 
14
14
  end
15
-
15
+
16
16
  module InstanceMethods
17
-
17
+
18
18
  # If the component has persistent config in its disposal
19
19
  def persistence_enabled?
20
20
  !persistence_manager_class.nil? && initial_config[:persistent_config]
21
21
  end
22
-
22
+
23
23
  # Access to own persistent config, e.g.:
24
24
  # persistent_config["window.size"] = 100
25
25
  # persistent_config["window.size"] => 100
@@ -30,7 +30,7 @@ module Netzke
30
30
  # config_class.component_name = persistence_key.to_s # pass to the config class our unique name
31
31
  # config_class
32
32
  # else
33
- # # if we can't use presistent config, all the calls to it will always return nil,
33
+ # # if we can't use presistent config, all the calls to it will always return nil,
34
34
  # # and the "="-operation will be ignored
35
35
  # logger.debug "==> NETZKE: no persistent config is set up for component '#{global_id}'"
36
36
  # {}
@@ -44,7 +44,7 @@ module Netzke
44
44
  config_class
45
45
  end
46
46
 
47
- # A string which will identify NetzkePreference records for this component.
47
+ # A string which will identify NetzkePreference records for this component.
48
48
  # If <tt>persistence_key</tt> is passed, use it. Otherwise use global component's id.
49
49
  def persistence_key #:nodoc:
50
50
  # initial_config[:persistence_key] ? parent.try(:persistence_key) ? "#{parent.persistence_key}__#{initial_config[:persistence_key]}".to_sym : initial_config[:persistence_key] : global_id.to_sym
@@ -56,18 +56,18 @@ module Netzke
56
56
  # current_config.deep_merge!(hsh.deep_convert_keys{ |k| k.to_s }) # first, recursively stringify the keys
57
57
  # persistent_config[:ext_config] = current_config
58
58
  # end
59
-
59
+
60
60
  # Returns a hash built from all persistent config values for the current component, following the double underscore
61
61
  # naming convention. E.g., if we have the following persistent config pairs:
62
62
  # enabled => true
63
63
  # layout__width => 100
64
64
  # layout__header__height => 20
65
- #
65
+ #
66
66
  # this method will return the following hash:
67
67
  # {:enabled => true, :layout => {:width => 100, :header => {:height => 20}}}
68
68
  # def persistence_hash_OLD
69
69
  # return {} if !persistence_enabled?
70
- #
70
+ #
71
71
  # @persistence_hash ||= begin
72
72
  # prefs = NetzkePreference.find_all_for_component(persistence_key.to_s)
73
73
  # res = {}
@@ -80,7 +80,7 @@ module Netzke
80
80
  # anchor = tmp_res[level_prefix] if level_prefix == hsh_levels.first
81
81
  # tmp_res = tmp_res[level_prefix]
82
82
  # end
83
- # # Now 'anchor' is a hash that represents the path to the single value,
83
+ # # Now 'anchor' is a hash that represents the path to the single value,
84
84
  # # for example: {:ext_config => {:title => 100}} (which corresponds to ext_config__title)
85
85
  # # So we need to recursively merge it into the final result
86
86
  # res.deep_merge!(hsh_levels.first => anchor)
@@ -88,7 +88,7 @@ module Netzke
88
88
  # res.deep_convert_keys{ |k| k.to_sym } # recursively symbolize the keys
89
89
  # end
90
90
  # end
91
-
91
+
92
92
  def update_persistent_options(hash)
93
93
  if persistence_enabled?
94
94
  options = persistent_options
@@ -97,19 +97,19 @@ module Netzke
97
97
  logger && logger.debug("Netzke warning: No persistence enabled for component '#{global_id}'")
98
98
  end
99
99
  end
100
-
100
+
101
101
  def persistent_options
102
102
  return {} if !persistence_enabled?
103
103
  persistence_manager_class.pref_to_read(global_id).try(:value) || {}
104
104
  end
105
-
105
+
106
106
  # A convenience method for instances
107
107
  def persistence_manager_class
108
108
  self.class.persistence_manager_class
109
109
  end
110
-
110
+
111
111
  end
112
-
112
+
113
113
  def self.included(receiver)
114
114
  receiver.extend ClassMethods
115
115
  receiver.send :include, InstanceMethods
@@ -3,10 +3,10 @@ module Netzke
3
3
  # Include JavaScript
4
4
  def netzke_js_include
5
5
  res = []
6
-
6
+
7
7
  # ExtJS
8
8
  res << (ENV['RAILS_ENV'] == 'development' ? javascript_include_tag("/extjs/adapter/ext/ext-base-debug", "/extjs/ext-all-debug") : javascript_include_tag("/extjs/adapter/ext/ext-base", "/extjs/ext-all"))
9
-
9
+
10
10
  # Netzke (dynamically generated)
11
11
  res << javascript_include_tag("/netzke/netzke")
12
12
  res.join("\n")
@@ -20,14 +20,14 @@ module Netzke
20
20
  res << "\n" << stylesheet_link_tag("/extjs/resources/css/xtheme-#{theme_name}") unless theme_name.to_s == "default"
21
21
  # Netzke (dynamically generated)
22
22
  res << "\n" << stylesheet_link_tag("/netzke/netzke")
23
-
24
- # External stylesheets (which cannot be loaded dynamically along with the rest of the component, e.g. due to that
23
+
24
+ # External stylesheets (which cannot be loaded dynamically along with the rest of the component, e.g. due to that
25
25
  # relative paths are used in them)
26
26
  res << "\n" << stylesheet_link_tag(Netzke::Core.external_css)
27
-
27
+
28
28
  res
29
29
  end
30
-
30
+
31
31
  # JavaScript for all Netzke classes in this view, and Ext.onReady which renders all Netzke components in this view
32
32
  def netzke_js
33
33
  res = []
@@ -38,17 +38,17 @@ module Netzke
38
38
  res << "Ext.onReady(function(){"
39
39
  res << content_for(:netzke_on_ready)
40
40
  res << "});"
41
-
41
+
42
42
  javascript_tag res.join("\n")
43
43
  end
44
-
44
+
45
45
  def netzke_css
46
46
  %{
47
47
  <style type="text/css" media="screen">
48
48
  #{content_for(:netzke_css)}
49
49
  </style>}
50
50
  end
51
-
51
+
52
52
  # Wrapper for all the above. Use it in your layout.
53
53
  # Params: <tt>:ext_theme</tt> - the name of ExtJS theme to apply (optional)
54
54
  # E.g.:
@@ -57,42 +57,42 @@ module Netzke
57
57
  theme = params[:ext_theme] || :default
58
58
  raw([netzke_css_include(theme), netzke_css, netzke_js_include, netzke_js].join("\n"))
59
59
  end
60
-
60
+
61
61
  # Use this helper in your views to embed Netzke components. E.g.:
62
62
  # netzke :my_grid, :class_name => "Basepack::GridPanel", :columns => [:id, :name, :created_at]
63
63
  # On how to configure a component, see documentation for Netzke::Base or/and specific component
64
64
  def netzke(name, config = {})
65
65
  @rendered_classes ||= []
66
-
66
+
67
67
  # if we are the first netzke call on the page, reset components hash in the session
68
68
  if @rendered_classes.empty?
69
69
  Netzke::Core.reset_components_in_session
70
70
  end
71
-
71
+
72
72
  class_name = config[:class_name] ||= name.to_s.camelcase
73
-
73
+
74
74
  config[:name] = name
75
-
75
+
76
76
  Netzke::Core.reg_component(config)
77
-
77
+
78
78
  w = Netzke::Base.instance_by_config(config)
79
79
  w.before_load # inform the component about initial load
80
-
80
+
81
81
  if Netzke::Core.javascript_on_main_page
82
82
  content_for :netzke_js_classes, raw(w.js_missing_code(@rendered_classes))
83
83
  end
84
-
84
+
85
85
  content_for :netzke_css, raw(w.css_missing_code(@rendered_classes))
86
-
86
+
87
87
  content_for :netzke_on_ready, raw("#{w.js_component_instance}\n\n#{w.js_component_render}")
88
-
88
+
89
89
  # Now mark this component's class as rendered, so that we only generate it once per view
90
90
  @rendered_classes << class_name unless @rendered_classes.include?(class_name)
91
91
 
92
92
  # Return the html for this component
93
93
  raw(w.js_component_html)
94
94
  end
95
-
95
+
96
96
  def ext(name, config = {})
97
97
  comp = Netzke::ExtComponent.new(name, config)
98
98
  content_for :netzke_on_ready, raw("#{comp.js_component_render}")
@@ -4,7 +4,7 @@ module Netzke
4
4
  base.send(:before_filter, :set_session_data)
5
5
  base.send(:before_filter, :set_controller)
6
6
  end
7
-
7
+
8
8
  def set_session_data
9
9
  ::Netzke::Core.session = session
10
10
  session[:netzke_user_id] = defined?(current_user) ? current_user.try(:id) : nil
@@ -1,7 +1,7 @@
1
1
  module ActionDispatch::Routing
2
2
  class Mapper
3
3
  def netzke
4
- match "/netzke/:action(.:format)" => "netzke"
4
+ match "/netzke/:action(.:format)" => "netzke"
5
5
  end
6
6
  end
7
7
  end
@@ -1,26 +1,26 @@
1
1
  module Netzke
2
2
  module Services
3
3
  class BadEndpointReturnType < RuntimeError; end
4
-
4
+
5
5
  module ClassMethods
6
6
  # Declare connection points between client side of a component and its server side. For example:
7
7
  #
8
8
  # api :reset_data
9
- #
10
- # will provide JavaScript side with a method <tt>resetData</tt> that will result in a call to Ruby
9
+ #
10
+ # will provide JavaScript side with a method <tt>resetData</tt> that will result in a call to Ruby
11
11
  # method <tt>reset_data</tt>, e.g.:
12
- #
12
+ #
13
13
  # this.resetData({hard:true});
14
- #
14
+ #
15
15
  # See netzke-basepack's GridPanel for an example.
16
- #
16
+ #
17
17
  def api(*api_points)
18
18
  ::ActiveSupport::Deprecation.warn("Using the 'api' call is deprecated. Use the 'endpoint' approach instead", caller)
19
-
19
+
20
20
  api_points.each do |apip|
21
21
  add_endpoint(apip)
22
22
  end
23
-
23
+
24
24
  # It may be needed later for security
25
25
  api_points.each do |apip|
26
26
  module_eval <<-END, __FILE__, __LINE__
@@ -36,14 +36,14 @@ module Netzke
36
36
  def endpoint(name, options = {}, &block)
37
37
  add_endpoint(name)
38
38
  define_method name, &block if block # if no block is given, the method is supposed to be defined elsewhere
39
-
39
+
40
40
  # define_method name, &block if block # if no block is given, the method is supposed to be defined elsewhere
41
41
  define_method :"endpoint_#{name}" do |*args|
42
42
  res = send(name, *args)
43
43
  res.respond_to?(:to_nifty_json) && res.to_nifty_json || ""
44
44
  end
45
45
  end
46
-
46
+
47
47
  # Register an endpoint
48
48
  def add_endpoint(ep)
49
49
  current_endpoints = read_inheritable_attribute(:endpoints) || []
@@ -56,10 +56,10 @@ module Netzke
56
56
  read_inheritable_attribute(:endpoints)
57
57
  end
58
58
  end
59
-
59
+
60
60
  module InstanceMethods
61
61
  end
62
-
62
+
63
63
  def self.included(receiver)
64
64
  receiver.extend ClassMethods
65
65
  receiver.send :include, InstanceMethods
@@ -6,17 +6,17 @@ module Netzke
6
6
  def session
7
7
  ::Netzke::Core.session
8
8
  end
9
-
9
+
10
10
  # Component-specific session.
11
11
  def component_session
12
12
  session[global_id] ||= {}
13
13
  end
14
-
14
+
15
15
  # Returns this component's configuration options stored in the session. Those get merged into the component's configuration at instantiation.
16
16
  def session_options
17
17
  session_persistence_enabled? && component_session[:options] || {}
18
18
  end
19
-
19
+
20
20
  # Updates the session options
21
21
  def update_session_options(hash)
22
22
  if session_persistence_enabled?
@@ -26,7 +26,7 @@ module Netzke
26
26
  logger.debug "Netzke warning: No session persistence enabled for component '#{global_id}'"
27
27
  end
28
28
  end
29
-
29
+
30
30
  private
31
31
  def session_persistence_enabled?
32
32
  initial_config[:session_persistence]
@@ -1,12 +1,12 @@
1
1
  module Netzke
2
2
  module Stylesheets
3
3
  extend ActiveSupport::Concern
4
-
4
+
5
5
  included do
6
6
  class_attribute :css_included_files
7
7
  self.css_included_files = []
8
8
  end
9
-
9
+
10
10
  module ClassMethods
11
11
  # Returns all extra CSS code (as string) required by this component's class
12
12
  def css_included
@@ -28,7 +28,7 @@ module Netzke
28
28
  end
29
29
 
30
30
  # Definition of CSS files which will be dynamically loaded together with this component
31
- # e.g.
31
+ # e.g.
32
32
  # css_include "#{File.dirname(__FILE__)}/themis_navigation/static.css"
33
33
  # or
34
34
  # css_include "#{File.dirname(__FILE__)}/themis_navigation/one.css","#{File.dirname(__FILE__)}/themis_navigation/two.css"
@@ -36,17 +36,17 @@ module Netzke
36
36
  def css_include(*args)
37
37
  self.css_included_files += args
38
38
  end
39
-
39
+
40
40
  end
41
-
41
+
42
42
  module InstanceMethods
43
43
  def css_missing_code(cached = [])
44
- code = dependency_classes.inject("") do |r,k|
44
+ code = dependency_classes.inject("") do |r,k|
45
45
  cached.include?(k) ? r : r + constantize_class_name(k).css_code(cached)
46
46
  end
47
47
  code.blank? ? nil : code
48
48
  end
49
-
50
- end
49
+
50
+ end
51
51
  end
52
52
  end
data/lib/netzke-core.rb CHANGED
@@ -8,7 +8,7 @@ require 'netzke/base'
8
8
  module Netzke
9
9
  autoload :Core, 'netzke/core'
10
10
  autoload :ExtComponent, 'netzke/ext_component'
11
-
11
+
12
12
  class Engine < ::Rails::Engine
13
13
  config.after_initialize do
14
14
  # Do some initialization which is only possible after Rails is initialized
@@ -31,7 +31,7 @@ if defined? Rails
31
31
  require 'netzke/rails/action_view_ext'
32
32
  include Netzke::ActionViewExt
33
33
  end
34
-
34
+
35
35
  # Make this plugin auto-reloadable for easier development
36
36
  # ActiveSupport::Dependencies.autoload_once_paths.delete(File.join(File.dirname(__FILE__)))
37
37
  end
data/netzke-core.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{netzke-core}
8
- s.version = "0.6.2"
8
+ s.version = "0.6.3"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Sergei Kozlov"]
12
- s.date = %q{2010-10-27}
12
+ s.date = %q{2010-11-02}
13
13
  s.description = %q{Allows building ExtJS/Rails reusable code in a DRY way}
14
14
  s.email = %q{sergei@playcode.nl}
15
15
  s.extra_rdoc_files = [
@@ -162,12 +162,12 @@ Gem::Specification.new do |s|
162
162
  "test/unit/netzke_preference_test.rb",
163
163
  "uninstall.rb"
164
164
  ]
165
- s.homepage = %q{http://github.com/skozlov/netzke-core}
165
+ s.homepage = %q{http://netzke.org}
166
166
  s.post_install_message = %q{
167
167
  ========================================================================
168
168
 
169
169
  Thanks for installing Netzke Core!
170
-
170
+
171
171
  Netzke home page: http://netzke.org
172
172
  Netzke Google Groups: http://groups.google.com/group/netzke
173
173
  Netzke tutorials: http://blog.writelesscode.com
@@ -176,7 +176,6 @@ Gem::Specification.new do |s|
176
176
 
177
177
  }
178
178
  s.require_paths = ["lib"]
179
- s.rubyforge_project = %q{netzke-core}
180
179
  s.rubygems_version = %q{1.3.7}
181
180
  s.summary = %q{Build ExtJS/Rails components with minimum effort}
182
181
  s.test_files = [