netzke-core 0.7.3 → 0.7.4

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/CHANGELOG.rdoc CHANGED
@@ -1,3 +1,8 @@
1
+ = v0.7.4 - 2011-10-20
2
+ * enhancements
3
+ * Less aggressive rescuing at constantizing a string, to let more descriptive exceptions get through.
4
+ * New +delegates_to_dsl+ class method to degelate default config options to class level. See the +ConfigToDslDelegator+ module.
5
+
1
6
  = v0.7.3 - 2011-09-04
2
7
  * Rails 3.1 compatibility. Really. Hopefully.
3
8
 
@@ -49,7 +54,7 @@
49
54
  = v0.6.7 - 2011-08-16
50
55
  * enhancements
51
56
  * No more using +method_missing+ for invoking endpoints.
52
- * New "cache" option for `netzke_init` which gets passed to `javascript_include_tag` (no support for css caching of this type yet)
57
+ * New "cache" option for +netzke_init+ which gets passed to +javascript_include_tag+ (no support for css caching of this type yet)
53
58
  * Netzke dynamic js and css-files such as ext.js, touch.css, now get generated at the application start, and put into "public/netzke". Solves a long standing problem with serving those files by HTTP servers in some cases. Enables caching naturally.
54
59
  * Moved features and specs to test/core_test_app (tests should be run from that folder from now on)
55
60
  * Introduced plugin functionality. We can create Netzke components that are pluggable into other components as Ext JS plugins.
@@ -59,7 +64,7 @@
59
64
  * Client-server communication is updated to use Ext.Direct (many thanks to @pschyska)
60
65
  * Introduced +js_translate+ class method that allows specifying i18n properties used in the JavaScript class
61
66
  * Better handling of actions i18n
62
- * New `Netzke::Base.class_config_option` method to specify a class-level configuration options for a component, e.g. (in GridPanel): `class_config_option :column_filters_available, true`. This option then can be set in Rails application configuration, e.g.: `config.netzke.basepack.grid_panel.column_filters_available = false`, or directly on `Netzke::Core.config`, e.g.: `Netzke::Core.config.netzke.basepack.grid_panel.column_filters_available = false`.
67
+ * New +Netzke::Base.class_config_option+ method to specify a class-level configuration options for a component, e.g. (in GridPanel): +class_config_option :column_filters_available, true+. This option then can be set in Rails application configuration, e.g.: `config.netzke.basepack.grid_panel.column_filters_available = false`, or directly on `Netzke::Core.config`, e.g.: `Netzke::Core.config.netzke.basepack.grid_panel.column_filters_available = false`.
63
68
 
64
69
  = v0.6.5 - 2011-01-14
65
70
  * enhancements
data/{TODO → TODO.md} RENAMED
@@ -1,14 +1,27 @@
1
- = ToDo
1
+ # ToDo
2
2
  Make it possible to pass a constant (not a string) to the `class_name` option
3
+
3
4
  Make :lazy_loading "true" by default when defining a child component
5
+
4
6
  Make :items option also accept a hash.
7
+
5
8
  Caching for netzke_controller-provided JS and CSS.
9
+
6
10
  Caching - investigate reusing (fragment?) caching of Rails.
7
11
 
8
12
 
9
- = Ideas that didn't work out
13
+ ## Roadmap
14
+
15
+ ### 0.8
10
16
 
11
- == Making value from super-class accessible in the block parameters in endpoints, e.g.:
17
+ Get rid of Symbol#action and Symbol#component
18
+
19
+ Get rid of String#l
20
+
21
+
22
+ ## Ideas that didn't work out
23
+
24
+ ### Making value from super-class accessible in the block parameters in endpoints
12
25
 
13
26
  endpoint :call_server do |params, orig|
14
27
  orig.merge(:set_title => orig[:set_title] + " extended")
@@ -19,4 +32,4 @@ So, to override an endpoint, simply define a method with endpoint's name, e.g.:
19
32
 
20
33
  def call_server(params)
21
34
  super.merge(...)
22
- end
35
+ end
data/lib/netzke/base.rb CHANGED
@@ -12,6 +12,7 @@ require 'netzke/state'
12
12
  require 'netzke/embedding'
13
13
  require 'netzke/actions'
14
14
  require 'netzke/session'
15
+ require 'netzke/config_to_dsl_delegator'
15
16
 
16
17
  module Netzke
17
18
  # The base for every Netzke component
@@ -41,6 +42,9 @@ module Netzke
41
42
  include Stylesheets
42
43
  include Embedding
43
44
  include Actions
45
+ include ConfigToDslDelegator
46
+
47
+ delegates_to_dsl :title, :items
44
48
 
45
49
  class_config_option :default_instance_config, {}
46
50
 
@@ -67,11 +71,7 @@ module Netzke
67
71
  def constantize_class_name(class_name)
68
72
  "#{class_name}".constantize
69
73
  rescue NameError
70
- begin
71
- "Netzke::#{class_name}".constantize
72
- rescue NameError
73
- nil
74
- end
74
+ "Netzke::#{class_name}".constantize
75
75
  end
76
76
 
77
77
  # Instance of component by config
@@ -0,0 +1,41 @@
1
+ module Netzke
2
+ # This module allows delegating the configuration options for a component into the level of the component's class.
3
+ # As an example, let's take the :title option understood by any Ext.panel.Panel-derived component. Netzke::Base calls:
4
+ #
5
+ # delegates_to_dsl :title
6
+ #
7
+ # which provides any child class with a DSL method `title` which can be used like this:
8
+ #
9
+ # class MyComponent < Netzke::Base
10
+ # title "My cool component"
11
+ # end
12
+ #
13
+ # This will provide for :title => "My cool component" being a default option for MyComponent's instances.
14
+ #
15
+ # This is very handy when a frequently-inherited class implements some common option. Another example would be the :model option in Basepack::Grid/FormPanel. This way the child class will not need to mess up with the `default_config` method if all it needs is specify that default option.
16
+ module ConfigToDslDelegator
17
+ extend ActiveSupport::Concern
18
+
19
+ module ClassMethods
20
+ # Delegates specified configuration options to the class level. See ConfigToDslDelegator.
21
+ def delegates_to_dsl(*option_names)
22
+ delegated_options = read_inheritable_attribute(:delegated_options) || []
23
+ delegated_options += option_names
24
+ write_inheritable_attribute(:delegated_options, delegated_options)
25
+ end
26
+
27
+ def inherited(inherited_class) # :nodoc:
28
+ super
29
+
30
+ properties = read_inheritable_attribute(:delegated_options) || []
31
+ properties.size.times do |i|
32
+ inherited_class.class.send(:define_method, properties[i], lambda { |value|
33
+ default_config = read_inheritable_attribute(:default_config) || {}
34
+ default_config.merge!(properties[i].to_sym => value)
35
+ write_inheritable_attribute(:default_config, default_config)
36
+ })
37
+ end
38
+ end
39
+ end
40
+ end
41
+ end
@@ -1,4 +1,6 @@
1
1
  module Netzke
2
+ # Handles all the intricate matters of component configuration.
3
+ # TODO: simplify!
2
4
  module Configuration
3
5
  extend ActiveSupport::Concern
4
6
 
@@ -91,7 +93,7 @@ module Netzke
91
93
  module InstanceMethods
92
94
  # Default config - before applying any passed configuration
93
95
  def default_config
94
- @default_config ||= {}.merge(weak_default_options).merge(self.class.default_instance_config)
96
+ @default_config ||= {}.merge(weak_default_options).merge(self.class.default_instance_config).merge(self.class.read_inheritable_attribute(:default_config) || {})
95
97
  end
96
98
 
97
99
  # Static, hardcoded config. Consists of default values merged with config that was passed during instantiation
@@ -3,7 +3,7 @@ module Netzke
3
3
  module Version
4
4
  MAJOR = 0
5
5
  MINOR = 7
6
- PATCH = 3
6
+ PATCH = 4
7
7
 
8
8
  STRING = [MAJOR, MINOR, PATCH].compact.join('.')
9
9
  end
data/netzke-core.gemspec CHANGED
@@ -5,17 +5,16 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{netzke-core}
8
- s.version = "0.7.3"
8
+ s.version = "0.7.4"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = [%q{NomadCoder}]
12
- s.date = %q{2011-09-04}
12
+ s.date = %q{2011-10-20}
13
13
  s.description = %q{Allows building DRY ExtJS/Rails applications by enabling modular development}
14
14
  s.email = %q{nmcoder@gmail.com}
15
15
  s.extra_rdoc_files = [
16
16
  "LICENSE",
17
- "README.md",
18
- "TODO"
17
+ "README.md"
19
18
  ]
20
19
  s.files = [
21
20
  ".autotest",
@@ -24,7 +23,7 @@ Gem::Specification.new do |s|
24
23
  "Manifest",
25
24
  "README.md",
26
25
  "Rakefile",
27
- "TODO",
26
+ "TODO.md",
28
27
  "app/controllers/netzke_controller.rb",
29
28
  "init.rb",
30
29
  "install.rb",
@@ -36,6 +35,7 @@ Gem::Specification.new do |s|
36
35
  "lib/netzke/actions.rb",
37
36
  "lib/netzke/base.rb",
38
37
  "lib/netzke/composition.rb",
38
+ "lib/netzke/config_to_dsl_delegator.rb",
39
39
  "lib/netzke/configuration.rb",
40
40
  "lib/netzke/core.rb",
41
41
  "lib/netzke/core/dynamic_assets.rb",
@@ -1,4 +1,6 @@
1
1
  class ComponentWithActions < Netzke::Base
2
+ title "Panel that has actions"
3
+
2
4
  # Define actions as a hash
3
5
  action :another_action, :disabled => true, :text => "Disabled action", :icon => :accept
4
6
 
@@ -12,7 +14,6 @@ class ComponentWithActions < Netzke::Base
12
14
  {:text => "Not used"}
13
15
  end
14
16
 
15
- js_property :title, "Panel that has actions"
16
17
 
17
18
  js_property :bbar, [:some_action.action, :another_action.action]
18
19
 
@@ -55,4 +56,4 @@ class ComponentWithActions < Netzke::Base
55
56
  }
56
57
  JS
57
58
 
58
- end
59
+ end
@@ -1,6 +1,6 @@
1
1
  # This component has the header hidden by custom CSS
2
2
  class ComponentWithCustomCss < Netzke::Base
3
- js_property :title, "ComponentWithCustomCss"
3
+ title "ComponentWithCustomCss"
4
4
 
5
5
  js_property :html, "A component with the body hidden by means of custom CSS"
6
6
 
@@ -1,5 +1,6 @@
1
1
  class ComponentWithJsMixin < Netzke::Base
2
- js_property :title, "ComponentWithJsMixin"
2
+ title "ComponentWithJsMixin"
3
+
3
4
  js_include :extra_one, :extra_two
4
5
  js_mixin :method_set_one, :method_set_two
5
6
  js_mixin # with no parameters, it'll assume :component_with_js_mixin
@@ -1,5 +1,6 @@
1
1
  class ComponentWithSessionPersistence < Netzke::Base
2
- js_property :title, "Default Title"
2
+ title "Default Title"
3
+
3
4
  js_property :bbar, [:bug_server.action]
4
5
 
5
6
  action :bug_server, :text => "Tell server to store new title"
@@ -1,5 +1,5 @@
1
1
  class ExtendedServerCaller < ServerCaller
2
- js_properties :title => "Extended Server Caller"
2
+ title "Extended Server Caller"
3
3
 
4
4
  js_method :on_bug_server, <<-JS
5
5
  function(){
@@ -9,6 +9,7 @@ class ExtendedServerCaller < ServerCaller
9
9
  }
10
10
  JS
11
11
 
12
+ # Overriding the :whats_up endpoint from ServerCaller
12
13
  def whats_up_endpoint(params)
13
14
  super.tap do |s|
14
15
  s[:set_title] = s[:set_title] + ", shiny weather"
@@ -1,6 +1,6 @@
1
1
  class HelloWorldComponent < Netzke::Base
2
2
  # Ext.Panel's config option "title"
3
- js_property :title, "My Hello World Component"
3
+ title "My Hello World Component"
4
4
 
5
5
  # Bottom bar with an automatically created action
6
6
  js_property :bbar, [:bug_server.action]
@@ -1,4 +1,6 @@
1
1
  class ServerCaller < Netzke::Base
2
+ title "Server Caller!"
3
+
2
4
  action :bug_server # Actual action's text is set in en.yml
3
5
 
4
6
  js_properties(
@@ -18,4 +20,4 @@ class ServerCaller < Netzke::Base
18
20
  {:set_title => "All quiet here on the server"}
19
21
  end
20
22
 
21
- end
23
+ end
@@ -12,6 +12,7 @@ Feature: Persistence
12
12
  And I should not see "HTML from session"
13
13
 
14
14
  When I press "Tell server to store new title"
15
+ And I wait for response from server
15
16
  And I go to the ComponentWithSessionPersistence test page
16
17
  Then I should see "Title From Session"
17
18
  And I should see "HTML from session"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: netzke-core
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.3
4
+ version: 0.7.4
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2011-09-04 00:00:00.000000000Z
12
+ date: 2011-10-20 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activesupport
16
- requirement: &70108192225160 !ruby/object:Gem::Requirement
16
+ requirement: &70252618149160 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,7 +21,7 @@ dependencies:
21
21
  version: 3.0.0
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70108192225160
24
+ version_requirements: *70252618149160
25
25
  description: Allows building DRY ExtJS/Rails applications by enabling modular development
26
26
  email: nmcoder@gmail.com
27
27
  executables: []
@@ -29,7 +29,6 @@ extensions: []
29
29
  extra_rdoc_files:
30
30
  - LICENSE
31
31
  - README.md
32
- - TODO
33
32
  files:
34
33
  - .autotest
35
34
  - CHANGELOG.rdoc
@@ -37,7 +36,7 @@ files:
37
36
  - Manifest
38
37
  - README.md
39
38
  - Rakefile
40
- - TODO
39
+ - TODO.md
41
40
  - app/controllers/netzke_controller.rb
42
41
  - init.rb
43
42
  - install.rb
@@ -49,6 +48,7 @@ files:
49
48
  - lib/netzke/actions.rb
50
49
  - lib/netzke/base.rb
51
50
  - lib/netzke/composition.rb
51
+ - lib/netzke/config_to_dsl_delegator.rb
52
52
  - lib/netzke/configuration.rb
53
53
  - lib/netzke/core.rb
54
54
  - lib/netzke/core/dynamic_assets.rb