netzke-basepack 0.6.5 → 0.7.0
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 +7 -4
- data/README.md +63 -0
- data/Rakefile +4 -4
- data/javascripts/basepack.js +113 -133
- data/lib/netzke-basepack.rb +9 -2
- data/lib/netzke/basepack.rb +9 -6
- data/lib/netzke/basepack/accordion_panel.rb +1 -1
- data/lib/netzke/basepack/auth_app.rb +28 -21
- data/lib/netzke/basepack/border_layout_panel.rb +9 -57
- data/lib/netzke/basepack/border_layout_panel/javascripts/border_layout_panel.js +40 -0
- data/lib/netzke/basepack/data_accessor.rb +3 -5
- data/lib/netzke/basepack/form_panel.rb +55 -52
- data/lib/netzke/basepack/form_panel/fields.rb +4 -2
- data/lib/netzke/basepack/form_panel/javascripts/comma_list_cbg.js +13 -28
- data/lib/netzke/basepack/form_panel/javascripts/form_panel.js +61 -34
- data/lib/netzke/basepack/form_panel/javascripts/n_radio_group.js +4 -3
- data/lib/netzke/basepack/form_panel/javascripts/readonly_mode.js +10 -10
- data/lib/netzke/basepack/form_panel/services.rb +1 -1
- data/lib/netzke/basepack/grid_panel.rb +23 -17
- data/lib/netzke/basepack/grid_panel/columns.rb +116 -71
- data/lib/netzke/basepack/grid_panel/javascripts/advanced_search.js +5 -7
- data/lib/netzke/basepack/grid_panel/javascripts/check_column_fix.js +6 -0
- data/lib/netzke/basepack/grid_panel/javascripts/edit_in_form.js +18 -15
- data/lib/netzke/basepack/grid_panel/javascripts/event_handling.js +178 -0
- data/lib/netzke/basepack/grid_panel/javascripts/grid_panel.js +230 -454
- data/lib/netzke/basepack/grid_panel/javascripts/rows-dd.js +1 -0
- data/lib/netzke/basepack/grid_panel/record_form_window.rb +8 -8
- data/lib/netzke/basepack/grid_panel/services.rb +12 -15
- data/lib/netzke/basepack/paging_form_panel.rb +1 -82
- data/lib/netzke/basepack/paging_form_panel/javascripts/paging_form_panel.js +76 -0
- data/lib/netzke/basepack/query_builder.rb +4 -4
- data/lib/netzke/basepack/query_builder/javascripts/query_builder.js +7 -4
- data/lib/netzke/basepack/search_panel.rb +1 -1
- data/lib/netzke/basepack/search_panel/javascripts/condition_field.js +27 -20
- data/lib/netzke/basepack/search_panel/javascripts/search_panel.js +4 -4
- data/lib/netzke/basepack/search_window.rb +4 -4
- data/lib/netzke/basepack/simple_app.rb +36 -8
- data/lib/netzke/basepack/simple_app/javascripts/simple_app.js +27 -16
- data/lib/netzke/basepack/tab_panel/javascripts/tab_panel.js +1 -1
- data/lib/netzke/basepack/version.rb +2 -2
- data/lib/netzke/basepack/window.rb +2 -45
- data/lib/netzke/basepack/window/javascripts/window.js +18 -0
- data/lib/netzke/basepack/wrap_lazy_loaded.rb +1 -1
- data/locales/de.yml +79 -0
- data/locales/en.yml +0 -10
- data/netzke-basepack.gemspec +32 -19
- data/stylesheets/basepack.css +16 -16
- data/test/rails_app/.gitignore +1 -0
- data/test/rails_app/Gemfile +9 -5
- data/test/rails_app/Gemfile.lock +51 -49
- data/test/rails_app/app/components/author_form.rb +32 -0
- data/test/rails_app/app/components/book_form.rb +6 -4
- data/test/rails_app/app/components/book_grid.rb +4 -3
- data/test/rails_app/app/components/book_grid_loader.rb +2 -2
- data/test/rails_app/app/components/book_grid_with_custom_columns.rb +11 -5
- data/test/rails_app/app/components/book_grid_with_default_values.rb +1 -1
- data/test/rails_app/app/components/book_grid_with_extra_feedback.rb +11 -0
- data/test/rails_app/app/components/book_grid_with_extra_filters.rb +14 -0
- data/test/rails_app/app/components/book_grid_with_paging.rb +10 -0
- data/test/rails_app/app/components/book_grid_with_persistence.rb +6 -0
- data/test/rails_app/app/components/book_paging_form_panel.rb +3 -3
- data/test/rails_app/app/components/book_with_custom_primary_key_grid.rb +10 -0
- data/test/rails_app/app/components/form_without_model.rb +5 -4
- data/test/rails_app/app/components/paging_form_with_search.rb +3 -2
- data/test/rails_app/app/components/some_auth_app.rb +3 -3
- data/test/rails_app/app/components/some_border_layout.rb +2 -2
- data/test/rails_app/app/components/some_simple_app.rb +6 -5
- data/test/rails_app/app/components/window_component_loader.rb +11 -2
- data/test/rails_app/app/controllers/components_controller.rb +1 -1
- data/test/rails_app/app/models/book_with_custom_primary_key.rb +4 -0
- data/test/rails_app/config/initializers/netzke.rb +6 -0
- data/test/rails_app/config/locales/es.yml +0 -10
- data/test/rails_app/db/migrate/20110701070052_create_book_with_custom_primary_keys.rb +15 -0
- data/test/rails_app/db/schema.rb +12 -2
- data/test/rails_app/db/seeds.rb +21 -1
- data/test/rails_app/features/form_panel.feature +17 -17
- data/test/rails_app/features/grid_panel.feature +20 -4
- data/test/rails_app/features/grid_panel_with_custom_primary_key.feature +15 -0
- data/test/rails_app/features/paging_form_panel.feature +14 -0
- data/test/rails_app/features/search_in_grid.feature +2 -1
- data/test/rails_app/features/simple_app.feature +5 -0
- data/test/rails_app/features/step_definitions/accordion_steps.rb +1 -5
- data/test/rails_app/features/step_definitions/ext_steps.rb +16 -0
- data/test/rails_app/features/step_definitions/form_panel_steps.rb +10 -12
- data/test/rails_app/features/step_definitions/generic_steps.rb +12 -4
- data/test/rails_app/features/step_definitions/grid_panel_steps.rb +47 -32
- data/test/rails_app/features/tab_panel.feature +2 -2
- data/test/rails_app/spec/factories.rb +4 -0
- metadata +26 -13
- data/README.rdoc +0 -67
- data/from_05_to_06.rdoc +0 -2
- data/javascripts/feedback_ghost.js +0 -34
- data/test/rails_app/public/netzke/basepack/ts-checkbox.gif +0 -0
data/CHANGELOG.rdoc
CHANGED
|
@@ -1,12 +1,15 @@
|
|
|
1
|
-
=
|
|
2
|
-
*
|
|
3
|
-
|
|
1
|
+
= 0.7.0 - 2011-08-09
|
|
2
|
+
* Core 0.7.0 and Ext 4 compatibility
|
|
3
|
+
* API changes
|
|
4
|
+
* [JS] Removed the helper BorderLayoutPanel#get<Region>Component method altogether. Use Ext 4 Container#child instead
|
|
5
|
+
|
|
6
|
+
= v0.6.5 - to be released
|
|
4
7
|
* enhancements
|
|
5
8
|
* When columns states are saved in the persistent storage, adding/removing columns (e.g. in the code) will reset the saved states
|
|
6
9
|
* Moved features and specs to test/rails_app
|
|
7
10
|
* bug fix
|
|
8
11
|
* FormPanel with multiple association fields wouldn't submit data correctly
|
|
9
|
-
*
|
|
12
|
+
* GridPanel's forms take over the +text+ configuration option for columns as +fieldLabel+ for default fields
|
|
10
13
|
|
|
11
14
|
= v0.6.4 - 2011-02-26
|
|
12
15
|
* API changes
|
data/README.md
ADDED
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
# Netzke Basepack
|
|
2
|
+
|
|
3
|
+
A pack of pre-built [Netzke](http://netzke.org) components - such as grid, form, tab panel, etc.
|
|
4
|
+
|
|
5
|
+
## Requirements
|
|
6
|
+
|
|
7
|
+
* Ruby 1.9.2 (1.8.7 may work, too)
|
|
8
|
+
* Rails >= 3.0.0
|
|
9
|
+
* Ext JS >= 4.0.0
|
|
10
|
+
|
|
11
|
+
## Installation
|
|
12
|
+
|
|
13
|
+
In your Gemfile:
|
|
14
|
+
|
|
15
|
+
gem 'netzke-basepack'
|
|
16
|
+
|
|
17
|
+
For the "edge" stuff, tell bundler to get the gem straight from GitHub:
|
|
18
|
+
|
|
19
|
+
gem 'netzke-basepack', :git => "git://github.com/skozlov/netzke-basepack.git"
|
|
20
|
+
|
|
21
|
+
## Usage
|
|
22
|
+
|
|
23
|
+
Embed a basepack component into a view as any other Netzke component, e.g.:
|
|
24
|
+
|
|
25
|
+
<%= netzke :books, :class_name => 'Netzke::Basepack::GridPanel', :model => 'Book' %>
|
|
26
|
+
|
|
27
|
+
For more examples, see http://demo.netzke.com, and look into test/rails_app.
|
|
28
|
+
|
|
29
|
+
## Testing and playing with Netzke Basepack
|
|
30
|
+
|
|
31
|
+
Netzke Basepack is bundled with Cucumber and RSpec tests. If you would like to contribute to the project, you may want to learn how to [run the tests](https://github.com/skozlov/netzke-core/wiki/Automated-testing).
|
|
32
|
+
|
|
33
|
+
Besides, the bundled test application is a convenient [playground](https://github.com/skozlov/netzke-core/wiki/Playground) for those who search to experiment with the framework.
|
|
34
|
+
|
|
35
|
+
After setting up the test application, you can access the test components (from test/rails_app/app/components) like this:
|
|
36
|
+
|
|
37
|
+
http://localhost:3000/components/<name_of_the_test_component_class>
|
|
38
|
+
|
|
39
|
+
e.g.:
|
|
40
|
+
|
|
41
|
+
http://localhost:3000/components/UserGrid
|
|
42
|
+
|
|
43
|
+
## Icons support
|
|
44
|
+
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.
|
|
45
|
+
|
|
46
|
+
## Ext 3 support
|
|
47
|
+
Versions 0.6.x are for you if you're using Ext 3 (*hardly maintained*)
|
|
48
|
+
|
|
49
|
+
## Rails 2 support
|
|
50
|
+
With Rails 2 (and Ext 3 only), use versions 0.5.x (*not maintained*)
|
|
51
|
+
|
|
52
|
+
## More info
|
|
53
|
+
Official project site: http://netzke.org
|
|
54
|
+
|
|
55
|
+
Twitter:
|
|
56
|
+
|
|
57
|
+
* latest news about Netzke: http://twitter.com/netzke
|
|
58
|
+
* author's rambling about osx, productivity and what not: http://twitter.com/nomadcoder
|
|
59
|
+
|
|
60
|
+
Many (if a bit outdated) tutorials: http://blog.writelesscode.com
|
|
61
|
+
|
|
62
|
+
---
|
|
63
|
+
Copyright (c) 2008-2011 NomadCoder, released under the MIT license
|
data/Rakefile
CHANGED
|
@@ -9,10 +9,10 @@ begin
|
|
|
9
9
|
gemspec.email = "sergei@playcode.nl"
|
|
10
10
|
gemspec.homepage = "http://netzke.org"
|
|
11
11
|
gemspec.authors = ["Sergei Kozlov"]
|
|
12
|
-
gemspec.add_dependency("netzke-core",
|
|
13
|
-
gemspec.add_dependency("meta_where",
|
|
14
|
-
gemspec.add_dependency("will_paginate", "~>3.0.
|
|
15
|
-
gemspec.add_dependency("acts_as_list")
|
|
12
|
+
gemspec.add_dependency("netzke-core", "~>0.7.0")
|
|
13
|
+
gemspec.add_dependency("meta_where", "~>1.0.0")
|
|
14
|
+
gemspec.add_dependency("will_paginate", "~>3.0.0")
|
|
15
|
+
gemspec.add_dependency("acts_as_list", "~>0.1.4")
|
|
16
16
|
gemspec.post_install_message = <<-MESSAGE
|
|
17
17
|
|
|
18
18
|
========================================================================
|
data/javascripts/basepack.js
CHANGED
|
@@ -5,164 +5,144 @@ Ext.ns("Ext.ux.grid");
|
|
|
5
5
|
Ext.apply(Ext.History, new Ext.util.Observable());
|
|
6
6
|
|
|
7
7
|
// A convenient passfield
|
|
8
|
-
Ext.netzke.PassField = Ext.extend(Ext.form.TextField, {
|
|
9
|
-
|
|
10
|
-
});
|
|
11
|
-
Ext.reg('passfield', Ext.netzke.PassField);
|
|
12
|
-
|
|
13
|
-
Ext.override(Ext.ux.form.DateTimeField, {
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
});
|
|
8
|
+
// Ext.netzke.PassField = Ext.extend(Ext.form.TextField, {
|
|
9
|
+
// inputType: 'password'
|
|
10
|
+
// });
|
|
11
|
+
// Ext.reg('passfield', Ext.netzke.PassField);
|
|
12
|
+
|
|
13
|
+
// Ext.override(Ext.ux.form.DateTimeField, {
|
|
14
|
+
// format: "Y-m-d",
|
|
15
|
+
// timeFormat: "g:i:s",
|
|
16
|
+
// picker: {
|
|
17
|
+
// minIncremenet: 15
|
|
18
|
+
// }
|
|
19
|
+
// });
|
|
20
20
|
|
|
21
21
|
// ComboBox that gets options from the server (used in both grids and panels)
|
|
22
|
-
Ext.
|
|
22
|
+
Ext.define('Ext.netzke.ComboBox', {
|
|
23
|
+
extend : 'Ext.form.field.ComboBox',
|
|
24
|
+
alias : 'widget.netzkeremotecombo',
|
|
23
25
|
valueField : 'field1',
|
|
24
26
|
displayField : 'field2',
|
|
25
27
|
triggerAction : 'all',
|
|
26
|
-
|
|
28
|
+
// WIP: Breaking - should not be 'true' if combobox is not editable
|
|
29
|
+
// typeAhead : true,
|
|
27
30
|
|
|
28
31
|
initComponent : function(){
|
|
29
|
-
var
|
|
32
|
+
var modelName = this.parentId + "_" + this.name;
|
|
33
|
+
|
|
34
|
+
Ext.define(modelName, {
|
|
35
|
+
extend: 'Ext.data.Model',
|
|
36
|
+
fields: ['field1', 'field2']
|
|
37
|
+
});
|
|
38
|
+
|
|
30
39
|
var store = new Ext.data.Store({
|
|
31
|
-
|
|
32
|
-
|
|
40
|
+
model: modelName,
|
|
41
|
+
proxy: {
|
|
42
|
+
type: 'direct',
|
|
43
|
+
directFn: Netzke.providers[this.parentId].getComboboxOptions,
|
|
44
|
+
reader: {
|
|
45
|
+
type: 'array',
|
|
46
|
+
root: 'data'
|
|
47
|
+
}
|
|
48
|
+
}
|
|
33
49
|
});
|
|
34
|
-
|
|
35
|
-
|
|
50
|
+
|
|
51
|
+
// TODO: find a cleaner way to pass this.name to the server
|
|
52
|
+
store.on('beforeload', function(self, params) {
|
|
53
|
+
params.params.column = this.name;
|
|
36
54
|
},this);
|
|
37
55
|
|
|
56
|
+
// If inline data was passed (TODO: is this actually working?)
|
|
38
57
|
if (this.store) store.loadData({data: this.store});
|
|
39
58
|
|
|
40
59
|
this.store = store;
|
|
41
60
|
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
delete qe.combo.lastQuery;
|
|
49
|
-
},this);
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
// A not-so-clean approach to submit the current record id
|
|
53
|
-
store.on('beforeload',function(store, options){
|
|
54
|
-
if (parent.getSelectionModel) {
|
|
55
|
-
var selected = parent.getSelectionModel().getSelected();
|
|
56
|
-
if (selected) options.params.id = selected.id;
|
|
57
|
-
} else {
|
|
58
|
-
// TODO: also for the FormPanel
|
|
59
|
-
}
|
|
60
|
-
}, this);
|
|
61
|
+
this.callParent();
|
|
62
|
+
},
|
|
63
|
+
|
|
64
|
+
collapse: function(){
|
|
65
|
+
// HACK: do not hide dropdown menu while loading items
|
|
66
|
+
if( !this.store.loading ) this.callParent();
|
|
61
67
|
}
|
|
62
68
|
});
|
|
63
69
|
|
|
64
|
-
Ext.reg('netzkeremotecombo', Ext.netzke.ComboBox);
|
|
65
|
-
|
|
66
70
|
Ext.util.Format.mask = function(v){
|
|
67
71
|
return "********";
|
|
68
72
|
};
|
|
69
73
|
|
|
70
|
-
Ext.netzke.JsonField = Ext.extend(Ext.form.TextField, {
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
74
|
+
// Ext.netzke.JsonField = Ext.extend(Ext.form.TextField, {
|
|
75
|
+
// validator: function(value) {
|
|
76
|
+
// try{
|
|
77
|
+
// var d = Ext.decode(value);
|
|
78
|
+
// return true;
|
|
79
|
+
// } catch(e) {
|
|
80
|
+
// return "Invalid JSON"
|
|
81
|
+
// }
|
|
82
|
+
// }
|
|
83
|
+
//
|
|
84
|
+
// ,setValue: function(value) {
|
|
85
|
+
// this.setRawValue(Ext.encode(value));
|
|
86
|
+
// }
|
|
87
|
+
//
|
|
88
|
+
// });
|
|
89
|
+
//
|
|
90
|
+
// Ext.reg('jsonfield', Ext.netzke.JsonField);
|
|
91
|
+
//
|
|
92
|
+
// WIP: todo - rewrite Ext.lib calls below
|
|
93
|
+
// Ext.grid.HeaderDropZone.prototype.onNodeDrop = function(n, dd, e, data){
|
|
94
|
+
// var h = data.header;
|
|
95
|
+
// if(h != n){
|
|
96
|
+
// var cm = this.grid.colModel;
|
|
97
|
+
// var x = Ext.lib.Event.getPageX(e);
|
|
98
|
+
// var r = Ext.lib.Dom.getRegion(n.firstChild);
|
|
99
|
+
// var pt = (r.right - x) <= ((r.right-r.left)/2) ? "after" : "before";
|
|
100
|
+
// var oldIndex = this.view.getCellIndex(h);
|
|
101
|
+
// var newIndex = this.view.getCellIndex(n);
|
|
102
|
+
// if(pt == "after"){
|
|
103
|
+
// newIndex++;
|
|
104
|
+
// }
|
|
105
|
+
// if(oldIndex < newIndex){
|
|
106
|
+
// newIndex--;
|
|
107
|
+
// }
|
|
108
|
+
// cm.moveColumn(oldIndex, newIndex);
|
|
109
|
+
// return true;
|
|
110
|
+
// }
|
|
111
|
+
// return false;
|
|
112
|
+
// };
|
|
113
|
+
//
|
|
114
|
+
//
|
|
115
|
+
// Ext.ns('Ext.ux.form');
|
|
116
|
+
|
|
117
|
+
Ext.define('Ext.ux.form.TriCheckbox', {
|
|
118
|
+
extend: 'Ext.form.field.ComboBox',
|
|
119
|
+
alias: 'widget.tricheckbox',
|
|
120
|
+
store: [[true, "Yes"], [false, "No"]],
|
|
121
|
+
forceSelection: true
|
|
122
|
+
});
|
|
79
123
|
|
|
80
|
-
|
|
81
|
-
|
|
124
|
+
// Enabling checkbox submission when unchecked
|
|
125
|
+
// TODO: it would be nice to standardize return values
|
|
126
|
+
// because currently checkboxes return "on", if checked,
|
|
127
|
+
// and boolean 'false' otherwise. It's not nice
|
|
128
|
+
// MAV
|
|
129
|
+
// TODO: maybe we should simply initialize 'uncheckedValue' somewhere else,
|
|
130
|
+
// instead
|
|
131
|
+
Ext.override( Ext.form.field.Checkbox, {
|
|
132
|
+
getSubmitValue: function() {
|
|
133
|
+
return this.callOverridden() || false; // 'off';
|
|
82
134
|
}
|
|
83
|
-
|
|
84
135
|
});
|
|
85
136
|
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
var x = Ext.lib.Event.getPageX(e);
|
|
93
|
-
var r = Ext.lib.Dom.getRegion(n.firstChild);
|
|
94
|
-
var pt = (r.right - x) <= ((r.right-r.left)/2) ? "after" : "before";
|
|
95
|
-
var oldIndex = this.view.getCellIndex(h);
|
|
96
|
-
var newIndex = this.view.getCellIndex(n);
|
|
97
|
-
if(pt == "after"){
|
|
98
|
-
newIndex++;
|
|
99
|
-
}
|
|
100
|
-
if(oldIndex < newIndex){
|
|
101
|
-
newIndex--;
|
|
102
|
-
}
|
|
103
|
-
cm.moveColumn(oldIndex, newIndex);
|
|
104
|
-
return true;
|
|
105
|
-
}
|
|
106
|
-
return false;
|
|
107
|
-
};
|
|
108
|
-
|
|
137
|
+
/* We were missing the 'load' event on proxy, implementing it ourselves */
|
|
138
|
+
Ext.override(Ext.data.proxy.Server, {
|
|
139
|
+
constructor: function() {
|
|
140
|
+
this.addEvents('load');
|
|
141
|
+
this.callOverridden([arguments]);
|
|
142
|
+
},
|
|
109
143
|
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
triggerAction: 'all'
|
|
144
|
+
processResponse: function(success, operation, request, response, callback, scope){
|
|
145
|
+
this.callOverridden(arguments);
|
|
146
|
+
this.fireEvent('load', this, response, operation);
|
|
147
|
+
}
|
|
115
148
|
});
|
|
116
|
-
Ext.reg('tricheckbox', Ext.ux.form.TriCheckbox);
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
// Enabling checkbox submission when unchecked
|
|
120
|
-
(function() {
|
|
121
|
-
origCheckboxRender = Ext.form.Checkbox.prototype.onRender;
|
|
122
|
-
origCheckboxSetValue = Ext.form.Checkbox.prototype.setValue;
|
|
123
|
-
|
|
124
|
-
Ext.override(Ext.form.Checkbox, {
|
|
125
|
-
onRender: function() {
|
|
126
|
-
// call the original onRender() function
|
|
127
|
-
origCheckboxRender.apply(this, arguments);
|
|
128
|
-
|
|
129
|
-
if (this.getXType() === 'radio') return;
|
|
130
|
-
|
|
131
|
-
// Handle initial case based on this.checked
|
|
132
|
-
if (this.checked == false) {
|
|
133
|
-
this.noValEl = Ext.DomHelper.insertAfter(this.el, {
|
|
134
|
-
tag: 'input',
|
|
135
|
-
type: 'hidden',
|
|
136
|
-
value: false,
|
|
137
|
-
name: this.getName()
|
|
138
|
-
}, true);
|
|
139
|
-
}
|
|
140
|
-
else {
|
|
141
|
-
this.noValEl = null;
|
|
142
|
-
}
|
|
143
|
-
},
|
|
144
|
-
setValue: function() {
|
|
145
|
-
// call original setValue() function
|
|
146
|
-
origCheckboxSetValue.apply(this, arguments);
|
|
147
|
-
|
|
148
|
-
if (this.getXType() === 'radio') return;
|
|
149
|
-
|
|
150
|
-
if (this.checked) {
|
|
151
|
-
if (this.noValEl != null) {
|
|
152
|
-
// Remove the extra hidden element
|
|
153
|
-
this.noValEl.remove();
|
|
154
|
-
this.noValEl = null;
|
|
155
|
-
}
|
|
156
|
-
}
|
|
157
|
-
else {
|
|
158
|
-
// Add our hidden element for (unchecked) value
|
|
159
|
-
if (this.noValEl == null) this.noValEl = Ext.DomHelper.insertAfter(this.el, {
|
|
160
|
-
tag: 'input',
|
|
161
|
-
type: 'hidden',
|
|
162
|
-
value: false,
|
|
163
|
-
name: this.getName()
|
|
164
|
-
}, true);
|
|
165
|
-
}
|
|
166
|
-
}
|
|
167
|
-
});
|
|
168
|
-
})();
|
data/lib/netzke-basepack.rb
CHANGED
|
@@ -10,10 +10,17 @@ require 'netzke/basepack'
|
|
|
10
10
|
module Netzke
|
|
11
11
|
module Basepack
|
|
12
12
|
class Engine < Rails::Engine
|
|
13
|
+
|
|
14
|
+
I18n.load_path << File.dirname(__FILE__) + '/../locales/en.yml'
|
|
15
|
+
I18n.load_path << File.dirname(__FILE__) + '/../locales/de.yml'
|
|
16
|
+
|
|
17
|
+
config.after_initialize do
|
|
18
|
+
Netzke::Core.external_ext_css << "#{Netzke::Core.ext_uri}/examples/ux/grid/css/RangeMenu"
|
|
19
|
+
Netzke::Core.external_ext_css << "#{Netzke::Core.ext_uri}/examples/ux/grid/css/GridFilters"
|
|
20
|
+
Netzke::Core.external_ext_css << "#{Netzke::Core.ext_uri}/examples/ux/css/CheckHeader"
|
|
21
|
+
end
|
|
13
22
|
end
|
|
14
23
|
end
|
|
15
24
|
end
|
|
16
25
|
|
|
17
|
-
I18n.load_path << File.dirname(__FILE__) + '/../locales/en.yml'
|
|
18
|
-
|
|
19
26
|
Netzke::Basepack.init
|
data/lib/netzke/basepack.rb
CHANGED
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
require 'netzke/basepack/version'
|
|
2
|
-
|
|
2
|
+
|
|
3
|
+
if defined? ActiveRecord
|
|
4
|
+
require 'netzke/active_record'
|
|
5
|
+
require 'meta_where'
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
# will_paginate supports more than just ActiveRecord
|
|
9
|
+
require 'will_paginate'
|
|
3
10
|
|
|
4
11
|
module Netzke
|
|
5
12
|
module Basepack
|
|
@@ -11,15 +18,11 @@ module Netzke
|
|
|
11
18
|
|
|
12
19
|
# Called from netzke-basepack.rb
|
|
13
20
|
def init
|
|
14
|
-
Netzke::Core.ext_javascripts << "#{File.dirname(__FILE__)}/../../javascripts/
|
|
15
|
-
Netzke::Core.ext_javascripts << "#{File.dirname(__FILE__)}/../../javascripts/datetimefield.js"
|
|
21
|
+
# Netzke::Core.ext_javascripts << "#{File.dirname(__FILE__)}/../../javascripts/datetimefield.js"
|
|
16
22
|
Netzke::Core.ext_javascripts << "#{File.dirname(__FILE__)}/../../javascripts/basepack.js"
|
|
17
23
|
|
|
18
24
|
Netzke::Core.ext_stylesheets << "#{File.dirname(__FILE__)}/../../stylesheets/datetimefield.css"
|
|
19
25
|
Netzke::Core.ext_stylesheets << "#{File.dirname(__FILE__)}/../../stylesheets/basepack.css"
|
|
20
|
-
|
|
21
|
-
Netzke::Core.external_ext_css << "/extjs/examples/ux/gridfilters/css/RangeMenu"
|
|
22
|
-
Netzke::Core.external_ext_css << "/extjs/examples/ux/gridfilters/css/GridFilters"
|
|
23
26
|
end
|
|
24
27
|
|
|
25
28
|
# Use it to confirure Basepack in the initializers, e.g.:
|
|
@@ -27,7 +27,7 @@ module Netzke
|
|
|
27
27
|
item.on('expand', function(i){
|
|
28
28
|
if (i && i.wrappedComponent && !i.items.first() && !i.beingLoaded) {
|
|
29
29
|
i.beingLoaded = true; // prevent more than one request per panel in case of fast clicking
|
|
30
|
-
this.
|
|
30
|
+
this.loadNetzkeComponent({name: i.wrappedComponent, container: i.id}, function(){i.beingLoaded = false});
|
|
31
31
|
}
|
|
32
32
|
}, this);
|
|
33
33
|
}, this);
|
|
@@ -4,21 +4,28 @@ module Netzke
|
|
|
4
4
|
# ** NOTE: it's WIP **
|
|
5
5
|
class AuthApp < SimpleApp
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
|
|
7
|
+
def default_config
|
|
8
|
+
super.tap do |c|
|
|
9
|
+
c[:login_url] = "/login"
|
|
10
|
+
c[:logout_url] = "/logout"
|
|
11
|
+
end
|
|
12
|
+
end
|
|
9
13
|
|
|
10
|
-
|
|
11
|
-
self.
|
|
14
|
+
# class_config_option :login_url, "/login"
|
|
15
|
+
# # self.login_url = "/login"
|
|
16
|
+
#
|
|
17
|
+
# class_attribute :logout_url
|
|
18
|
+
# self.logout_url = "/logout"
|
|
12
19
|
|
|
13
20
|
js_method :on_login, <<-JS
|
|
14
21
|
function(){
|
|
15
|
-
window.location =
|
|
22
|
+
window.location = this.loginUrl;
|
|
16
23
|
}
|
|
17
24
|
JS
|
|
18
25
|
|
|
19
26
|
js_method :on_logout, <<-JS
|
|
20
27
|
function(){
|
|
21
|
-
window.location =
|
|
28
|
+
window.location = this.logoutUrl;
|
|
22
29
|
}
|
|
23
30
|
JS
|
|
24
31
|
|
|
@@ -27,7 +34,7 @@ module Netzke
|
|
|
27
34
|
this.toggleConfigMode();
|
|
28
35
|
}
|
|
29
36
|
JS
|
|
30
|
-
|
|
37
|
+
# WIP: todo - rewrite Ext.lib calls below
|
|
31
38
|
js_method :show_masquerade_selector, <<-JS
|
|
32
39
|
function(){
|
|
33
40
|
var w = new Ext.Window({
|
|
@@ -82,27 +89,27 @@ module Netzke
|
|
|
82
89
|
});
|
|
83
90
|
|
|
84
91
|
w.show(null, function(){
|
|
85
|
-
this.
|
|
92
|
+
this.loadNetzkeComponent({id:"masqueradeSelector", container:w.id})
|
|
86
93
|
}, this);
|
|
87
94
|
|
|
88
95
|
}
|
|
89
96
|
JS
|
|
90
97
|
|
|
91
|
-
# Set the Logout button if Netzke::
|
|
98
|
+
# Set the Logout button if Netzke::Core.current_user is set
|
|
92
99
|
def menu
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
100
|
+
[].tap do |menu|
|
|
101
|
+
user = Netzke::Core.current_user
|
|
102
|
+
if !user.nil?
|
|
103
|
+
user_name = user.respond_to?(:name) ? user.name : user.email # try to display user's name, fallback to email
|
|
104
|
+
menu << "->" <<
|
|
105
|
+
{
|
|
106
|
+
:text => user_name,
|
|
107
|
+
:menu => user_menu
|
|
108
|
+
}
|
|
109
|
+
else
|
|
110
|
+
menu << "->" << :login.action
|
|
111
|
+
end
|
|
104
112
|
end
|
|
105
|
-
res
|
|
106
113
|
end
|
|
107
114
|
|
|
108
115
|
def user_menu
|