netzke-basepack 0.6.0 → 0.6.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (93) hide show
  1. data/CHANGELOG.rdoc +14 -6
  2. data/README.rdoc +16 -31
  3. data/Rakefile +22 -16
  4. data/TODO.rdoc +1 -1
  5. data/app/models/netzke_field_list.rb +29 -29
  6. data/app/models/netzke_model_attr_list.rb +4 -4
  7. data/app/models/netzke_persistent_array_auto_model.rb +9 -9
  8. data/config/database.yml +2 -35
  9. data/features/accordion_panel.feature +1 -1
  10. data/features/form_panel.feature +2 -2
  11. data/features/grid_panel.feature +15 -3
  12. data/features/search_in_grid.feature +4 -4
  13. data/features/simple_panel.feature +4 -4
  14. data/features/step_definitions/pickle_steps.rb +2 -2
  15. data/features/step_definitions/web_steps.rb +5 -5
  16. data/features/support/env.rb +6 -6
  17. data/features/tab_panel.feature +1 -1
  18. data/javascripts/basepack.js +28 -28
  19. data/lib/netzke-basepack.rb +5 -5
  20. data/lib/netzke/active_record.rb +1 -1
  21. data/lib/netzke/active_record/association_attributes.rb +9 -9
  22. data/lib/netzke/active_record/attributes.rb +24 -23
  23. data/lib/netzke/active_record/combobox_options.rb +3 -3
  24. data/lib/netzke/active_record/relation_extensions.rb +4 -4
  25. data/lib/netzke/basepack.rb +4 -4
  26. data/{app/components → lib}/netzke/basepack/accordion_panel.rb +7 -7
  27. data/{app/components → lib}/netzke/basepack/basic_app.rb +18 -18
  28. data/{app/components → lib}/netzke/basepack/basic_app/statusbar_ext.js +0 -0
  29. data/lib/netzke/basepack/border_layout_panel.rb +101 -0
  30. data/{app/components → lib}/netzke/basepack/form_panel.rb +21 -21
  31. data/{app/components → lib}/netzke/basepack/form_panel/fields.rb +29 -36
  32. data/{app/components → lib}/netzke/basepack/form_panel/javascripts/netzkefileupload.js +0 -0
  33. data/{app/components → lib}/netzke/basepack/form_panel/javascripts/pre.js +9 -9
  34. data/{app/components → lib}/netzke/basepack/form_panel/javascripts/xcheckbox.js +1 -1
  35. data/{app/components → lib}/netzke/basepack/form_panel/services.rb +11 -11
  36. data/{app/components → lib}/netzke/basepack/grid_panel.rb +74 -92
  37. data/{app/components → lib}/netzke/basepack/grid_panel/columns.rb +34 -36
  38. data/{app/components → lib}/netzke/basepack/grid_panel/javascript.rb +7 -7
  39. data/{app/components → lib}/netzke/basepack/grid_panel/javascripts/advanced_search.js +10 -10
  40. data/{app/components → lib}/netzke/basepack/grid_panel/javascripts/edit_in_form.js +2 -2
  41. data/{app/components → lib}/netzke/basepack/grid_panel/javascripts/pre.js +31 -31
  42. data/{app/components → lib}/netzke/basepack/grid_panel/javascripts/rows-dd.js +1 -1
  43. data/{app/components → lib}/netzke/basepack/grid_panel/multi_edit_form.rb +2 -2
  44. data/{app/components → lib}/netzke/basepack/grid_panel/record_form_window.rb +3 -3
  45. data/{app/components → lib}/netzke/basepack/grid_panel/search_window.rb +11 -11
  46. data/{app/components → lib}/netzke/basepack/grid_panel/services.rb +28 -28
  47. data/{app/components → lib}/netzke/basepack/panel.rb +0 -0
  48. data/{app/components → lib}/netzke/basepack/search_panel.rb +11 -11
  49. data/{app/components → lib}/netzke/basepack/tab_panel.rb +7 -7
  50. data/lib/netzke/basepack/version.rb +1 -1
  51. data/{app/components → lib}/netzke/basepack/window.rb +14 -14
  52. data/{app/components → lib}/netzke/basepack/wrapper.rb +6 -6
  53. data/lib/netzke/data_accessor.rb +18 -18
  54. data/lib/netzke/fields_configurator.rb +30 -30
  55. data/lib/netzke/json_array_editor.rb +9 -9
  56. data/lib/netzke/masquerade_selector.rb +5 -5
  57. data/locale/en.yml +1 -1
  58. data/netzke-basepack.gemspec +252 -240
  59. data/spec/active_record/attributes_spec.rb +6 -1
  60. data/spec/active_record/relation_extensions_spec.rb +11 -11
  61. data/spec/components/form_panel_spec.rb +13 -19
  62. data/spec/components/grid_panel_spec.rb +1 -1
  63. data/test/rails_app/Gemfile +4 -3
  64. data/test/rails_app/Gemfile.lock +42 -50
  65. data/test/rails_app/app/components/book_grid.rb +4 -0
  66. data/test/rails_app/app/components/generic_user_form.rb +2 -2
  67. data/test/rails_app/app/components/simple_basic_app.rb +3 -3
  68. data/test/rails_app/app/components/simple_panel.rb +1 -1
  69. data/test/rails_app/app/components/some_border_layout.rb +12 -11
  70. data/test/rails_app/app/components/some_search_panel.rb +5 -5
  71. data/test/rails_app/app/components/user_form.rb +1 -1
  72. data/test/rails_app/app/components/window_component_loader.rb +2 -2
  73. data/test/rails_app/app/models/author.rb +7 -0
  74. data/test/rails_app/app/models/book.rb +3 -0
  75. data/test/rails_app/app/models/user.rb +1 -1
  76. data/test/rails_app/config/locales/es.yml +0 -1
  77. data/test/rails_app/config/routes.rb +2 -2
  78. data/test/rails_app/db/development_structure.sql +28 -3
  79. data/test/rails_app/db/migrate/20101026185816_create_authors.rb +14 -0
  80. data/test/rails_app/db/migrate/20101026190021_create_books.rb +17 -0
  81. data/test/rails_app/db/schema.rb +18 -1
  82. data/test/rails_app/public/javascripts/effects.js +1 -1
  83. data/test/rails_app/spec/models/author_spec.rb +5 -0
  84. data/test/rails_app/spec/models/book_spec.rb +5 -0
  85. data/test/test_helper.rb +1 -1
  86. data/test/unit/accordion_panel_test.rb +2 -2
  87. data/test/unit/active_record_basepack_test.rb +9 -9
  88. data/test/unit/fields_configuration_test.rb +4 -4
  89. data/test/unit/grid_panel_test.rb +8 -8
  90. data/test/unit/tab_panel_test.rb +2 -2
  91. metadata +49 -36
  92. data/.gitignore +0 -10
  93. data/app/components/netzke/basepack/border_layout_panel.rb +0 -39
data/CHANGELOG.rdoc CHANGED
@@ -1,3 +1,11 @@
1
+ = v0.6.1 - 2010-11-04
2
+ * enhancements
3
+ * BorderLayoutPanel persistence: remembers region sizes and collapsed/expanded states
4
+ * tooltips for grid buttons
5
+
6
+ * bug fix
7
+ * auto-detection of association's method when the latter is virtual was broken in 1.9.2
8
+
1
9
  = v0.6.0 - 2010-10-24
2
10
  * netzke-core 0.6.0 compatibility, thorough refactoring
3
11
  * Much more thorough testing (cucumber and rspec)
@@ -6,12 +14,12 @@
6
14
 
7
15
  * enhancements
8
16
  * if omitted in config, a column for the primary key is automatically added to Grid/FormPanel
9
-
17
+
10
18
  * API incompatibilities
11
19
  * in FormPanel, define the fields layout directly in :items, not in :fields or :columns
12
-
20
+
13
21
  * new
14
- * FormPanel allows for arbitrary layout of fields
22
+ * FormPanel allows for arbitrary layout of fields
15
23
 
16
24
  = v0.5.14 - 2010-09-08
17
25
  * bug fix
@@ -31,11 +39,11 @@
31
39
  = v0.5.13 - 2010-08-11
32
40
  * regression
33
41
  * combobox options configuration again has effect
34
-
42
+
35
43
  * bug fix
36
44
  * when a TabPanel was used as a standalone widget, the first tab was rendered empty
37
45
  * Grid/FormPanel: dynamically changing of columns doesn't erase those column settings that are not configurable via GUI, but which were specified in the code
38
-
46
+
39
47
  * enhancements
40
48
  * scopes can now be specified for an association combobox in Grid/FormPanels
41
49
  * GridPanel: you can now configure add/edit/multi_edit/search panels (e.g. to override the fields) and corresponding windows (e.g. to override the title)
@@ -304,7 +312,7 @@
304
312
  * Column resize & move functionality enabled by default
305
313
  * Column filters added
306
314
 
307
- = v0.1.0.1
315
+ = v0.1.0.1
308
316
  * Meta work: replacing underscore with dash in the name
309
317
 
310
318
  = v0.1.0 - 2008-12-20
data/README.rdoc CHANGED
@@ -3,46 +3,31 @@
3
3
  A pack of pre-built Netzke components, such as grid, form, tab panel, etc.
4
4
  Learn about Netzke on http://netzke.org.
5
5
 
6
- == Prerequisites
6
+ == Requirements
7
7
 
8
- 1. Rails >= 3.0, Ext JS >= 3.3.0
9
- 2. Netzke assumes that your ExtJS library is in public/extjs, which may be a symbolic link, e.g (from your app root):
8
+ * Ruby 1.9.2 (1.8.7 may work, too)
9
+ * Rails >= 3.0.0
10
+ * Ext JS >= 3.3.0
10
11
 
11
- ln -s ~/code/sencha/extjs/ext-3.3.0 public/extjs
12
+ == Installation
12
13
 
13
- = Installation
14
+ In your Gemfile:
14
15
 
15
- For the latest ("edge") stuff, install as plugin:
16
+ gem 'netzke-basepack'
16
17
 
17
- rails plugin install git://github.com/skozlov/netzke-basepack.git
18
-
19
- Or tell bundler to get the gem straight from github:
18
+ For the "edge" stuff, tell bundler to get the gem straight from GitHub:
20
19
 
21
20
  gem 'netzke-basepack', :git => "git://github.com/skozlov/netzke-basepack.git"
22
21
 
23
22
  == Usage
24
23
 
25
- Add Netzke routes (in routes.rb):
24
+ Read the "Embedding components into Rails views" section on http://github.com/skozlov/netzke-core
26
25
 
27
- # in routes.rb
28
- RailsApp::Application.routes.draw do
29
- netzke
30
- ...
31
- end
32
-
33
- == Embedding components into Rails' view
34
-
35
- Before you can use Netzke components in Rails' views, you need to add the following helper into your layout template, inside the "head" tag:
36
-
37
- <%= netzke_init %>
38
-
39
- This will include both ExtJS-related files (JavaScript and styles), and Netzke-related files.
40
-
41
- To embed a component into a view, use the +netzke+ helper, e.g.:
26
+ Embed a basepack component into a view as any other Netzke component, e.g.:
42
27
 
43
28
  <%= netzke :books, :class_name => 'Basepack::GridPanel', :model => 'Book' %>
44
-
45
- (assuming the existence of model 'Book')
29
+
30
+ (assuming model 'Book' exists)
46
31
 
47
32
  For more examples, see http://demo.netzke.com, and look into test/rails_app
48
33
 
@@ -53,7 +38,7 @@ Netzke-basepack is bundled with automated tests. To run them, you need to set up
53
38
  After this you may run (*from the netzke-basepack folder*):
54
39
 
55
40
  cucumber features
56
-
41
+
57
42
  and
58
43
 
59
44
  rspec spec
@@ -63,18 +48,18 @@ and
63
48
  The test/rails_app application is also a convenient playground, as it may be run as independent Rails 3 app. After starting it, access any of the lib/netzke widgets by using the following url:
64
49
 
65
50
  http://localhost:3000/components/<name of the component class>
66
-
51
+
67
52
  e.g.:
68
53
 
69
54
  http://localhost:3000/components/UserGrid
70
-
55
+
71
56
  == Icons support
72
57
  Netzke-basepack can make use of FamFamFam Silk icon set (http://www.famfamfam.com/archive/silk-icons-thats-your-lot/). To enable this, download the icons and put the "icons" folder into your app's public/images folder. Then restart your application.
73
58
 
74
59
  == More info
75
60
  Official project site: http://netzke.org
76
61
 
77
- Twitter (I try to only tweet about useful stuff): http://twitter.com/skozlov
62
+ Twitter (latest news about Netzke): http://twitter.com/skozlov
78
63
 
79
64
  Many (if a bit outdated) tutorials: http://blog.writelesscode.com
80
65
 
data/Rakefile CHANGED
@@ -7,9 +7,9 @@ begin
7
7
  gemspec.summary = "Pre-built Rails + ExtJS components for your RIA"
8
8
  gemspec.description = "A set of full-featured extendible Netzke components (such as FormPanel, GridPanel, Window, BorderLayoutPanel, etc) which can be used as building block for your RIA"
9
9
  gemspec.email = "sergei@playcode.nl"
10
- gemspec.homepage = "http://github.com/skozlov/netzke-basepack"
10
+ gemspec.homepage = "http://netzke.org"
11
11
  gemspec.authors = ["Sergei Kozlov"]
12
- gemspec.add_dependency("netzke-core", "~>0.6.0")
12
+ gemspec.add_dependency("netzke-core", "~>0.6.2")
13
13
  gemspec.add_dependency("meta_where", ">=0.9.3")
14
14
  gemspec.add_dependency("will_paginate", "~>3.0.pre2")
15
15
  gemspec.add_dependency("acts_as_list")
@@ -18,8 +18,8 @@ begin
18
18
  ========================================================================
19
19
 
20
20
  Thanks for installing Netzke Basepack!
21
-
22
- Don't forget to run "./script/generate netzke_basepack" for each
21
+
22
+ Don't forget to run "./script/generate netzke_basepack" for each
23
23
  Rails app that will be using this gem.
24
24
 
25
25
  Netzke home page: http://netzke.org
@@ -29,30 +29,36 @@ begin
29
29
  ========================================================================
30
30
 
31
31
  MESSAGE
32
-
32
+
33
33
  end
34
34
  Jeweler::GemcutterTasks.new
35
35
  rescue LoadError
36
36
  puts "Jeweler (or a dependency) not available. Install it with: gem install jeweler"
37
37
  end
38
38
 
39
+ require 'rake/testtask'
40
+ Rake::TestTask.new(:test) do |test|
41
+ test.libs << 'lib' << 'test'
42
+ test.pattern = 'test/**/*_test.rb'
43
+ test.verbose = true
44
+ end
45
+
39
46
  require 'rake/rdoctask'
40
47
  Rake::RDocTask.new do |rdoc|
41
- if File.exist?('VERSION')
42
- version = File.read('VERSION')
43
- else
44
- version = ""
45
- end
48
+ require './lib/netzke/basepack/version'
49
+ version = Netzke::Basepack::Version::STRING
46
50
 
47
51
  rdoc.rdoc_dir = 'rdoc'
48
52
  rdoc.title = "netzke-basepack #{version}"
53
+ # rdoc.main = "README.rdoc"
49
54
  rdoc.rdoc_files.include('README*')
55
+ rdoc.rdoc_files.include('CHANGELOG*')
50
56
  rdoc.rdoc_files.include('lib/**/*.rb')
51
57
  end
52
58
 
53
- require 'rake/testtask'
54
- Rake::TestTask.new(:test) do |test|
55
- test.libs << 'lib' << 'test'
56
- test.pattern = 'test/**/*_test.rb'
57
- test.verbose = true
58
- end
59
+ namespace :rdoc do
60
+ desc "Publish rdocs"
61
+ task :publish => :rdoc do
62
+ `scp -r rdoc/* fl:www/api.netzke.org/basepack`
63
+ end
64
+ end
data/TODO.rdoc CHANGED
@@ -1,5 +1,5 @@
1
1
  == Priority
2
- * Solve the confusion about columns being stored in the persistent config
2
+ * Fix :meta => true config in columns work
3
3
  * On grid refresh, reset the dirty fields, so that the "Apply" button doesn't do anything
4
4
  * DataAccessor#to_array should not rescue exceptions, but rather check the availability of the attributes; `respond_to_with_basepack?` should be extended to also return true for association columns
5
5
  * GridPanel's read_only vs editable (doesn't work now) options
@@ -20,7 +20,7 @@ class NetzkeFieldList < ActiveRecord::Base
20
20
  end
21
21
  update_attribute(:value, list.to_json)
22
22
  end
23
-
23
+
24
24
  def append_attr(attr_hash)
25
25
  list = ActiveSupport::JSON.decode(self.value)
26
26
  list << attr_hash
@@ -41,7 +41,7 @@ class NetzkeFieldList < ActiveRecord::Base
41
41
  []
42
42
  end
43
43
  end
44
-
44
+
45
45
  def self.find_all_lists_under_current_authority(model_name)
46
46
  authority_level, authority_id = Netzke::Base.authority_level
47
47
  case authority_level
@@ -59,11 +59,11 @@ class NetzkeFieldList < ActiveRecord::Base
59
59
  else
60
60
  []
61
61
  end
62
-
62
+
63
63
  end
64
-
65
-
66
- # Replaces the list with the data - only for the list found for the current authority.
64
+
65
+
66
+ # Replaces the list with the data - only for the list found for the current authority.
67
67
  # If the list is not found, it's created.
68
68
  def self.update_list_for_current_authority(pref_name, data, model_name = nil)
69
69
  pref = find_or_create_pref_to_read(pref_name)
@@ -71,21 +71,21 @@ class NetzkeFieldList < ActiveRecord::Base
71
71
  pref.model_name = model_name
72
72
  pref.save!
73
73
  end
74
-
74
+
75
75
 
76
76
  # If the <tt>model</tt> param is provided, then this preference will be assigned a parent preference
77
77
  # that configures the attributes for that model. This way we can track all preferences related to a model.
78
78
  def self.write_list(name, list, model = nil)
79
79
  pref_to_store_the_list = self.pref_to_write(name)
80
80
  pref_to_store_the_list.try(:update_attribute, :value, list.to_json)
81
-
81
+
82
82
  # link this preference to the parent that contains default attributes for the same model
83
83
  if model
84
84
  model_level_attrs_pref = self.pref_to_read("#{model.tableize}_model_attrs")
85
85
  model_level_attrs_pref.children << pref_to_store_the_list if model_level_attrs_pref && pref_to_store_the_list
86
86
  end
87
87
  end
88
-
88
+
89
89
  def self.read_list(name)
90
90
  json_encoded_value = self.pref_to_read(name).try(:value)
91
91
  ActiveSupport::JSON.decode(json_encoded_value).map(&:symbolize_keys) if json_encoded_value
@@ -96,26 +96,26 @@ class NetzkeFieldList < ActiveRecord::Base
96
96
  # read_list(model_name)
97
97
  # # read_list("#{model.tableize}_model_attrs")
98
98
  # end
99
-
99
+
100
100
  # Write model-level attrs
101
101
  # def self.write_attrs_for_model(model_name, data)
102
102
  # # write_list("#{model_name.tableize}_model_attrs", data)
103
103
  # write_list(model_name, data)
104
104
  # end
105
-
105
+
106
106
  # Options:
107
107
  # :attr - attribute to propagate. If not specified, all attrs found in configuration for the model
108
108
  # will be propagated.
109
109
  def self.update_children_on_attr(model, options = {})
110
110
  attr_name = options[:attr].try(:to_s)
111
-
111
+
112
112
  parent_pref = pref_to_read("#{model.tableize}_model_attrs")
113
-
113
+
114
114
  if parent_pref
115
115
  parent_list = ActiveSupport::JSON.decode(parent_pref.value)
116
116
  parent_pref.children.each do |ch|
117
117
  child_list = ActiveSupport::JSON.decode(ch.value)
118
-
118
+
119
119
  if attr_name
120
120
  # propagate a certain attribute
121
121
  propagate_attr(attr_name, parent_list, child_list)
@@ -124,12 +124,12 @@ class NetzkeFieldList < ActiveRecord::Base
124
124
  all_attrs = parent_list.first.try(:keys)
125
125
  all_attrs && all_attrs.each{ |attr_name| propagate_attr(attr_name, parent_list, child_list) }
126
126
  end
127
-
127
+
128
128
  ch.update_attribute(:value, child_list.to_json)
129
129
  end
130
130
  end
131
131
  end
132
-
132
+
133
133
  # meta_attrs:
134
134
  # {"city"=>{"included"=>true}, "building_number"=>{"default_value"=>100}}
135
135
  def self.update_children(model, meta_attrs)
@@ -139,26 +139,26 @@ class NetzkeFieldList < ActiveRecord::Base
139
139
  if parent_pref
140
140
  parent_pref.children.each do |ch|
141
141
  child_list = ActiveSupport::JSON.decode(ch.value)
142
-
142
+
143
143
  meta_attrs.each_pair do |k,v|
144
144
  child_list.detect{ |child_attr| child_attr["name"] == k }.try(:merge!, v)
145
145
  end
146
-
146
+
147
147
  ch.update_attribute(:value, child_list.to_json)
148
148
  end
149
149
  end
150
150
  end
151
151
 
152
152
  private
153
-
153
+
154
154
  def self.propagate_attr(attr_name, src_list, dest_list)
155
155
  for src_field in src_list
156
156
  dest_field = dest_list.detect{ |df| df["name"] == src_field["name"] }
157
157
  dest_field[attr_name] = src_field[attr_name] if dest_field && src_field[attr_name]
158
158
  end
159
159
  end
160
-
161
- # Overwrite pref_to_read, pref_to_write methods, and find_all_for_component if you want a different way of
160
+
161
+ # Overwrite pref_to_read, pref_to_write methods, and find_all_for_component if you want a different way of
162
162
  # identifying the proper preference based on your own authorization strategy.
163
163
  #
164
164
  # The default strategy is:
@@ -168,12 +168,12 @@ class NetzkeFieldList < ActiveRecord::Base
168
168
  # 2) if masq_user or masq_role is defined
169
169
  # pref_to_read and pref_to_write will always take the masquerade into account, e.g. reads/writes will go to
170
170
  # the user/role specified
171
- #
171
+ #
172
172
  def self.pref_to_read(name)
173
173
  name = name.to_s
174
174
  session = Netzke::Base.session
175
175
  cond = {:name => name}
176
-
176
+
177
177
  if session[:masq_user]
178
178
  # first, get the prefs for this user it they exist
179
179
  res = self.find(:first, :conditions => cond.merge({:user_id => session[:masq_user]}))
@@ -200,17 +200,17 @@ class NetzkeFieldList < ActiveRecord::Base
200
200
  else
201
201
  res = self.find(:first, :conditions => cond)
202
202
  end
203
-
204
- res
203
+
204
+ res
205
205
  end
206
-
206
+
207
207
  def self.find_or_create_pref_to_read(name)
208
208
  name = name.to_s
209
209
  attrs = {:name => name}
210
210
  extend_attrs_for_current_authority(attrs)
211
211
  self.first(:conditions => attrs) || self.new(attrs)
212
212
  end
213
-
213
+
214
214
  def self.extend_attrs_for_current_authority(hsh)
215
215
  authority_level, authority_id = Netzke::Base.authority_level
216
216
  case authority_level
@@ -224,12 +224,12 @@ class NetzkeFieldList < ActiveRecord::Base
224
224
  hsh.merge!(:user_id => authority_id)
225
225
  end
226
226
  end
227
-
227
+
228
228
  def self.pref_to_write(name)
229
229
  name = name.to_s
230
230
  session = Netzke::Base.session
231
231
  cond = {:name => name}
232
-
232
+
233
233
  if session[:masq_user]
234
234
  cond.merge!({:user_id => session[:masq_user]})
235
235
  # first, try to find the preference for masq_user
@@ -2,20 +2,20 @@
2
2
  # Is used to configure attributes in the layer between a model and its representation in the Netzke application, thus providing default attributes
3
3
  # for grids and panels.
4
4
  class NetzkeModelAttrList < NetzkeFieldList
5
-
5
+
6
6
  # Updates attributes for all lists owned by owner_id and below the current authority level
7
7
  def self.update_fields(owner_id, attrs_hash)
8
8
  super
9
-
9
+
10
10
  NetzkeFieldList.find_all_lists_under_current_authority(owner_id).each do |list|
11
11
  list.update_attrs(attrs_hash)
12
12
  end
13
13
  end
14
-
14
+
15
15
  def self.add_attrs(attrs)
16
16
  NetzkeFieldList.find_all_lists_under_current_authority(owner_id).each do |list|
17
17
  attrs.each{ |attr_hash| list.append_attr(attr_hash) }
18
18
  end
19
19
  end
20
-
20
+
21
21
  end
@@ -1,17 +1,17 @@
1
1
  require 'acts_as_list'
2
2
  class NetzkePersistentArrayAutoModel < ActiveRecord::Base
3
3
  set_table_name "netzke_temp_table"
4
- connection.create_table(table_name){} if !connection.table_exists?(table_name)
4
+ connection.create_table(table_name){} if !connection.table_exists?(table_name)
5
5
 
6
6
  acts_as_list
7
7
  default_scope :order => "position"
8
8
 
9
9
  cattr_accessor :config
10
-
10
+
11
11
  def self.all_columns
12
12
  self.all.map{ |c| c.attributes.reject{ |k,v| k == 'id' || k == 'position' } }
13
13
  end
14
-
14
+
15
15
  # Configuration
16
16
  def self.configure(config)
17
17
  self.config = config
@@ -20,7 +20,7 @@ class NetzkePersistentArrayAutoModel < ActiveRecord::Base
20
20
  end
21
21
  NetzkePreference.find_or_create_by_name("netzke_persistent_array_refresh_token").update_attribute(:value, refresh_token)
22
22
  end
23
-
23
+
24
24
  def self.rebuild_table#(config)
25
25
  connection.drop_table(table_name) if connection.table_exists?(table_name)
26
26
  # create the table with the fields
@@ -36,23 +36,23 @@ class NetzkePersistentArrayAutoModel < ActiveRecord::Base
36
36
  # self.create config[:initial_data]
37
37
  self.replace_data(config[:initial_data])
38
38
  end
39
-
39
+
40
40
  def self.replace_data(data)
41
41
  # only select those attributes that were provided to us as columns. The rest is ignored.
42
42
  column_names = config[:columns].map{ |c| c[:name] }
43
- clean_data = data.collect{ |c| c.reject{ |k,v| !column_names.include?(k.to_s) } }
43
+ clean_data = data.collect{ |c| c.reject{ |k,v| !column_names.include?(k.to_s) } }
44
44
  Rails.logger.debug "!!! clean_data: #{clean_data.inspect}\n"
45
45
  self.delete_all
46
46
  self.create(clean_data)
47
47
  end
48
-
48
+
49
49
  private
50
-
50
+
51
51
  def self.refresh_token
52
52
  @@refresh_token ||= begin
53
53
  session = Netzke::Base.session
54
54
  config[:owner] + (session[:masq_user] || session[:masq_role] || session[:masq_world] || session[:netzke_user_id]).to_s
55
55
  end
56
56
  end
57
-
57
+
58
58
  end