netzke-basepack 0.6.0 → 0.6.1

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 (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