puffer 0.0.23 → 0.0.24

Sign up to get free protection for your applications and to get access to all the features.
Files changed (100) hide show
  1. data/.rspec +1 -0
  2. data/Gemfile +1 -1
  3. data/Gemfile.lock +55 -53
  4. data/VERSION +1 -1
  5. data/app/assets/javascripts/puffer/application.js +6 -3
  6. data/app/assets/javascripts/puffer/paginator.js +223 -0
  7. data/app/assets/javascripts/puffer/puffer.js +12 -0
  8. data/app/assets/javascripts/puffer/rails.js +1 -0
  9. data/app/assets/javascripts/puffer/{right-autocompleter.js → right-autocompleter-src.js} +45 -41
  10. data/app/assets/javascripts/puffer/{right-calendar.js → right-calendar-src.js} +53 -50
  11. data/app/assets/javascripts/puffer/right-dialog-src.js +768 -0
  12. data/app/assets/javascripts/puffer/right-slider-src.js +507 -0
  13. data/app/assets/javascripts/puffer/{right.js → right-src.js} +1000 -230
  14. data/app/assets/stylesheets/puffer/application.css +2 -0
  15. data/app/assets/stylesheets/puffer/paginator.css +33 -0
  16. data/app/assets/stylesheets/puffer/right.css +4 -0
  17. data/app/components/base/form.html.erb +15 -0
  18. data/app/components/base_component.rb +15 -0
  19. data/app/components/boolean/form.html.erb +3 -0
  20. data/app/components/boolean/index.html.erb +3 -0
  21. data/app/components/boolean_component.rb +13 -0
  22. data/app/components/date_time/form.html.erb +5 -0
  23. data/app/components/date_time_component.rb +12 -0
  24. data/app/components/file/form.html.erb +5 -0
  25. data/app/components/file_component.rb +3 -0
  26. data/app/components/hidden/form.html.erb +1 -0
  27. data/app/components/hidden_component.rb +3 -0
  28. data/app/components/password/form.html.erb +5 -0
  29. data/app/components/password_component.rb +7 -0
  30. data/app/components/references_many/form.html.erb +1 -0
  31. data/app/components/references_many_component.rb +7 -0
  32. data/app/components/references_one/choose.html.erb +9 -0
  33. data/app/components/references_one/form.html.erb +28 -0
  34. data/app/components/references_one_component.rb +12 -0
  35. data/app/components/select/form.html.erb +5 -0
  36. data/app/components/select_component.rb +15 -0
  37. data/app/components/string/form.html.erb +5 -0
  38. data/app/components/string_component.rb +3 -0
  39. data/app/components/text/form.html.erb +5 -0
  40. data/app/components/text_component.rb +3 -0
  41. data/app/controllers/puffer/base.rb +4 -0
  42. data/app/views/puffer/base/_form.html.erb +0 -1
  43. data/app/views/puffer/base/_table.html.erb +25 -0
  44. data/app/views/puffer/base/index.html.erb +14 -28
  45. data/app/views/puffer/tree_base/_record.html.erb +1 -1
  46. data/lib/generators/puffer/component/USAGE +12 -0
  47. data/lib/generators/puffer/component/component_generator.rb +19 -0
  48. data/lib/generators/puffer/component/templates/component.rb +15 -0
  49. data/lib/generators/puffer/component/templates/component_spec.rb +19 -0
  50. data/lib/puffer/component.rb +141 -0
  51. data/lib/puffer/controller/dsl.rb +25 -12
  52. data/lib/puffer/engine.rb +5 -0
  53. data/lib/puffer/extensions/controller.rb +11 -9
  54. data/lib/puffer/extensions/form.rb +2 -1
  55. data/lib/puffer/extensions/mapper.rb +2 -0
  56. data/lib/puffer/field.rb +30 -19
  57. data/lib/puffer/field_set.rb +17 -2
  58. data/lib/puffer.rb +25 -8
  59. data/puffer.gemspec +59 -28
  60. data/spec/app/components/base_component_spec.rb +19 -0
  61. data/spec/app/components/boolean_component_spec.rb +36 -0
  62. data/spec/app/components/date_time_component_spec.rb +26 -0
  63. data/spec/app/components/file_component_spec.rb +25 -0
  64. data/spec/app/components/hidden_component_spec.rb +24 -0
  65. data/spec/app/components/password_component_spec.rb +37 -0
  66. data/spec/app/components/references_many_component_spec.rb +19 -0
  67. data/spec/app/components/references_one_component_spec.rb +19 -0
  68. data/spec/app/components/select_component_spec.rb +30 -0
  69. data/spec/app/components/string_component_spec.rb +25 -0
  70. data/spec/app/components/text_component_spec.rb +25 -0
  71. data/spec/dummy/app/controllers/admin/categories_controller.rb +3 -3
  72. data/spec/dummy/app/controllers/admin/posts_controller.rb +3 -0
  73. data/spec/dummy/app/controllers/{puffer → admin}/sessions_controller.rb +1 -1
  74. data/spec/dummy/app/controllers/admin/users_controller.rb +2 -2
  75. data/spec/dummy/app/models/post.rb +4 -0
  76. data/spec/dummy/db/migrate/20100930132656_create_posts.rb +2 -0
  77. data/spec/dummy/db/migrate/20100930132726_create_categories.rb +1 -0
  78. data/spec/dummy/db/schema.rb +3 -0
  79. data/spec/dummy/db/seeds.rb +6 -1
  80. data/spec/fabricators/categories_fabricator.rb +1 -0
  81. data/spec/fabricators/posts_fabricator.rb +1 -0
  82. data/spec/lib/component_spec.rb +7 -0
  83. data/spec/lib/fields_spec.rb +0 -4
  84. metadata +85 -56
  85. data/app/views/puffer/base/associated/_many.html.erb +0 -56
  86. data/app/views/puffer/base/associated/many.rjs +0 -1
  87. data/app/views/puffer/base/associated/one.js.erb +0 -13
  88. data/app/views/puffer/base/association/_many.html.erb +0 -7
  89. data/lib/puffer/controller/generated.rb +0 -65
  90. data/lib/puffer/customs.rb +0 -64
  91. data/lib/puffer/inputs/association.rb +0 -38
  92. data/lib/puffer/inputs/base.rb +0 -51
  93. data/lib/puffer/inputs/boolean.rb +0 -19
  94. data/lib/puffer/inputs/collection_association.rb +0 -11
  95. data/lib/puffer/inputs/date_time.rb +0 -16
  96. data/lib/puffer/inputs/file.rb +0 -11
  97. data/lib/puffer/inputs/hidden.rb +0 -15
  98. data/lib/puffer/inputs/password.rb +0 -11
  99. data/lib/puffer/inputs/select.rb +0 -19
  100. data/lib/puffer/inputs/text.rb +0 -11
data/.rspec CHANGED
@@ -1,2 +1,3 @@
1
1
  --colour
2
2
  --format documentation
3
+ --backtrace
data/Gemfile CHANGED
@@ -1,6 +1,6 @@
1
1
  source "http://rubygems.org"
2
2
 
3
- gem 'rails', '>= 3.1.0.rc5'
3
+ gem 'rails', '~> 3.1.0'
4
4
  gem 'kaminari'
5
5
  gem 'apotomo'
6
6
 
data/Gemfile.lock CHANGED
@@ -1,74 +1,75 @@
1
1
  GEM
2
2
  remote: http://rubygems.org/
3
3
  specs:
4
- actionmailer (3.1.0.rc5)
5
- actionpack (= 3.1.0.rc5)
4
+ actionmailer (3.1.0)
5
+ actionpack (= 3.1.0)
6
6
  mail (~> 2.3.0)
7
- actionpack (3.1.0.rc5)
8
- activemodel (= 3.1.0.rc5)
9
- activesupport (= 3.1.0.rc5)
7
+ actionpack (3.1.0)
8
+ activemodel (= 3.1.0)
9
+ activesupport (= 3.1.0)
10
10
  builder (~> 3.0.0)
11
11
  erubis (~> 2.7.0)
12
12
  i18n (~> 0.6)
13
- rack (~> 1.3.1)
14
- rack-cache (~> 1.0.2)
15
- rack-mount (~> 0.8.1)
16
- rack-test (~> 0.6.0)
17
- sprockets (~> 2.0.0.beta.12)
18
- activemodel (3.1.0.rc5)
19
- activesupport (= 3.1.0.rc5)
20
- bcrypt-ruby (~> 2.1.4)
13
+ rack (~> 1.3.2)
14
+ rack-cache (~> 1.0.3)
15
+ rack-mount (~> 0.8.2)
16
+ rack-test (~> 0.6.1)
17
+ sprockets (~> 2.0.0)
18
+ activemodel (3.1.0)
19
+ activesupport (= 3.1.0)
20
+ bcrypt-ruby (~> 3.0.0)
21
21
  builder (~> 3.0.0)
22
22
  i18n (~> 0.6)
23
- activerecord (3.1.0.rc5)
24
- activemodel (= 3.1.0.rc5)
25
- activesupport (= 3.1.0.rc5)
26
- arel (~> 2.1.4)
23
+ activerecord (3.1.0)
24
+ activemodel (= 3.1.0)
25
+ activesupport (= 3.1.0)
26
+ arel (~> 2.2.1)
27
27
  tzinfo (~> 0.3.29)
28
- activeresource (3.1.0.rc5)
29
- activemodel (= 3.1.0.rc5)
30
- activesupport (= 3.1.0.rc5)
31
- activesupport (3.1.0.rc5)
28
+ activeresource (3.1.0)
29
+ activemodel (= 3.1.0)
30
+ activesupport (= 3.1.0)
31
+ activesupport (3.1.0)
32
32
  multi_json (~> 1.0)
33
33
  apotomo (1.1.2)
34
34
  cells (>= 3.5.6)
35
35
  hooks (~> 0.1.3)
36
36
  onfire (~> 0.2.0)
37
- arel (2.1.4)
38
- bcrypt-ruby (2.1.4)
37
+ arel (2.2.1)
38
+ bcrypt-ruby (3.0.0)
39
39
  builder (3.0.0)
40
- capybara (1.0.0)
40
+ capybara (1.1.1)
41
41
  mime-types (>= 1.16)
42
42
  nokogiri (>= 1.3.3)
43
43
  rack (>= 1.0.0)
44
44
  rack-test (>= 0.5.4)
45
- selenium-webdriver (~> 0.2.0)
45
+ selenium-webdriver (~> 2.0)
46
46
  xpath (~> 0.1.4)
47
- cells (3.6.4)
47
+ cells (3.6.5)
48
48
  actionpack (~> 3.0)
49
49
  railties (~> 3.0)
50
- childprocess (0.2.0)
50
+ childprocess (0.2.2)
51
51
  ffi (~> 1.0.6)
52
52
  database_cleaner (0.6.7)
53
- diff-lcs (1.1.2)
53
+ diff-lcs (1.1.3)
54
54
  erubis (2.7.0)
55
- fabrication (1.0.1)
55
+ fabrication (1.1.0)
56
56
  ffi (1.0.9)
57
- forgery (0.3.12)
57
+ forgery (0.4.3)
58
58
  nokogiri (~> 1.4)
59
59
  git (1.2.5)
60
- guard (0.5.1)
60
+ guard (0.6.3)
61
61
  thor (~> 0.14.6)
62
- guard-rspec (0.4.0)
62
+ guard-rspec (0.4.4)
63
63
  guard (>= 0.4.0)
64
- hike (1.2.0)
64
+ hike (1.2.1)
65
65
  hooks (0.1.4)
66
66
  i18n (0.6.0)
67
67
  jeweler (1.6.4)
68
68
  bundler (~> 1.0)
69
69
  git (>= 1.2.5)
70
70
  rake
71
- json_pure (1.5.3)
71
+ json_pure (1.5.4)
72
+ spruz (~> 0.2.8)
72
73
  kaminari (0.12.4)
73
74
  rails (>= 3.0.0)
74
75
  libnotify (0.5.7)
@@ -78,38 +79,38 @@ GEM
78
79
  treetop (~> 1.4.8)
79
80
  mime-types (1.16)
80
81
  multi_json (1.0.3)
81
- nested_set (1.6.7)
82
+ nested_set (1.6.8)
82
83
  activerecord (>= 3.0.0)
83
84
  railties (>= 3.0.0)
84
85
  nokogiri (1.5.0)
85
86
  onfire (0.2.0)
86
87
  polyglot (0.3.2)
87
88
  rack (1.3.2)
88
- rack-cache (1.0.2)
89
+ rack-cache (1.0.3)
89
90
  rack (>= 0.4)
90
- rack-mount (0.8.1)
91
+ rack-mount (0.8.3)
91
92
  rack (>= 1.0.0)
92
93
  rack-ssl (1.3.2)
93
94
  rack
94
95
  rack-test (0.6.1)
95
96
  rack (>= 1.0)
96
- rails (3.1.0.rc5)
97
- actionmailer (= 3.1.0.rc5)
98
- actionpack (= 3.1.0.rc5)
99
- activerecord (= 3.1.0.rc5)
100
- activeresource (= 3.1.0.rc5)
101
- activesupport (= 3.1.0.rc5)
97
+ rails (3.1.0)
98
+ actionmailer (= 3.1.0)
99
+ actionpack (= 3.1.0)
100
+ activerecord (= 3.1.0)
101
+ activeresource (= 3.1.0)
102
+ activesupport (= 3.1.0)
102
103
  bundler (~> 1.0)
103
- railties (= 3.1.0.rc5)
104
- railties (3.1.0.rc5)
105
- actionpack (= 3.1.0.rc5)
106
- activesupport (= 3.1.0.rc5)
104
+ railties (= 3.1.0)
105
+ railties (3.1.0)
106
+ actionpack (= 3.1.0)
107
+ activesupport (= 3.1.0)
107
108
  rack-ssl (~> 1.3.2)
108
109
  rake (>= 0.8.7)
109
110
  rdoc (~> 3.4)
110
111
  thor (~> 0.14.6)
111
112
  rake (0.9.2)
112
- rdoc (3.9)
113
+ rdoc (3.9.4)
113
114
  rspec (2.6.0)
114
115
  rspec-core (~> 2.6.0)
115
116
  rspec-expectations (~> 2.6.0)
@@ -124,18 +125,19 @@ GEM
124
125
  railties (~> 3.0)
125
126
  rspec (~> 2.6.0)
126
127
  rubyzip (0.9.4)
127
- selenium-webdriver (0.2.2)
128
- childprocess (>= 0.1.9)
128
+ selenium-webdriver (2.5.0)
129
+ childprocess (>= 0.2.1)
129
130
  ffi (>= 1.0.7)
130
131
  json_pure
131
132
  rubyzip
132
- sprockets (2.0.0.beta.12)
133
+ sprockets (2.0.0)
133
134
  hike (~> 1.2)
134
135
  rack (~> 1.0)
135
136
  tilt (~> 1.1, != 1.3.0)
137
+ spruz (0.2.13)
136
138
  sqlite3 (1.3.4)
137
139
  thor (0.14.6)
138
- tilt (1.3.2)
140
+ tilt (1.3.3)
139
141
  treetop (1.4.10)
140
142
  polyglot
141
143
  polyglot (>= 0.3.1)
@@ -158,6 +160,6 @@ DEPENDENCIES
158
160
  kaminari
159
161
  libnotify
160
162
  nested_set
161
- rails (>= 3.1.0.rc5)
163
+ rails (~> 3.1.0)
162
164
  rspec-rails
163
165
  sqlite3
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.23
1
+ 0.0.24
@@ -1,5 +1,8 @@
1
- //= require puffer/right
2
- //= require puffer/right-calendar
3
- //= require puffer/right-autocompleter
1
+ //= require puffer/right-src
2
+ //= require puffer/right-dialog-src
3
+ //= require puffer/right-slider-src
4
+ //= require puffer/right-calendar-src
5
+ //= require puffer/right-autocompleter-src
6
+ //= require puffer/paginator
4
7
  //= require puffer/rails
5
8
  //= require puffer/puffer
@@ -0,0 +1,223 @@
1
+ var Paginator = RightJS.Paginator = (function(document, Math, RightJS) {
2
+
3
+ /**
4
+ * This module defines the basic widgets constructor
5
+ * it creates an abstract proxy with the common functionality
6
+ * which then we reuse and override in the actual widgets
7
+ *
8
+ * Copyright (C) 2010-2011 Nikolay Nemshilov
9
+ */
10
+
11
+ /**
12
+ * The widget units constructor
13
+ *
14
+ * @param String tag-name or Object methods
15
+ * @param Object methods
16
+ * @return Widget wrapper
17
+ */
18
+ function Widget(tag_name, methods) {
19
+ if (!methods) {
20
+ methods = tag_name;
21
+ tag_name = 'DIV';
22
+ }
23
+
24
+ /**
25
+ * An Abstract Widget Unit
26
+ *
27
+ * Copyright (C) 2010 Nikolay Nemshilov
28
+ */
29
+ var AbstractWidget = new RightJS.Class(RightJS.Element.Wrappers[tag_name] || RightJS.Element, {
30
+ /**
31
+ * The common constructor
32
+ *
33
+ * @param Object options
34
+ * @param String optional tag name
35
+ * @return void
36
+ */
37
+ initialize: function(key, options) {
38
+ this.key = key;
39
+ var args = [{'class': 'rui-' + key}];
40
+
41
+ // those two have different constructors
42
+ if (!(this instanceof RightJS.Input || this instanceof RightJS.Form)) {
43
+ args.unshift(tag_name);
44
+ }
45
+ this.$super.apply(this, args);
46
+
47
+ if (RightJS.isString(options)) {
48
+ options = RightJS.$(options);
49
+ }
50
+
51
+ // if the options is another element then
52
+ // try to dynamically rewrap it with our widget
53
+ if (options instanceof RightJS.Element) {
54
+ this._ = options._;
55
+ if ('$listeners' in options) {
56
+ options.$listeners = options.$listeners;
57
+ }
58
+ options = {};
59
+ }
60
+ this.setOptions(options, this);
61
+
62
+ return (RightJS.Wrapper.Cache[RightJS.$uid(this._)] = this);
63
+ },
64
+
65
+ // protected
66
+
67
+ /**
68
+ * Catches the options
69
+ *
70
+ * @param Object user-options
71
+ * @param Element element with contextual options
72
+ * @return void
73
+ */
74
+ setOptions: function(options, element) {
75
+ if (element) {
76
+ options = RightJS.Object.merge(options, new Function("return "+(
77
+ element.get('data-'+ this.key) || '{}'
78
+ ))());
79
+ }
80
+
81
+ if (options) {
82
+ RightJS.Options.setOptions.call(this, RightJS.Object.merge(this.options, options));
83
+ }
84
+
85
+ return this;
86
+ }
87
+ });
88
+
89
+ /**
90
+ * Creating the actual widget class
91
+ *
92
+ */
93
+ var Klass = new RightJS.Class(AbstractWidget, methods);
94
+
95
+ // creating the widget related shortcuts
96
+ RightJS.Observer.createShortcuts(Klass.prototype, Klass.EVENTS || RightJS([]));
97
+
98
+ return Klass;
99
+ }
100
+
101
+
102
+ /**
103
+ * The filenames to include
104
+ *
105
+ * Copyright (C) 2010 Nikolay Nemshilov
106
+ */
107
+ var R = RightJS,
108
+ $ = RightJS.$,
109
+ $$ = RightJS.$$,
110
+ $w = RightJS.$w,
111
+ $E = RightJS.$E,
112
+ $A = RightJS.$A,
113
+ isHash = RightJS.isHash,
114
+ Element = RightJS.Element;
115
+
116
+
117
+ var Paginator = new Widget({
118
+ extend: {
119
+ version: '2.2.3',
120
+
121
+ Options: {
122
+ total: 1,
123
+ current: 1,
124
+ link: ''
125
+ }
126
+ },
127
+
128
+ initialize: function() {
129
+ var args = $A(arguments).compact(), options = args.pop(), element = args.pop();
130
+
131
+ if (!isHash(options) || options instanceof Element) {
132
+ element = $(element || options);
133
+ options = {};
134
+ }
135
+
136
+ this.$super('paginator', element).setOptions(options);
137
+
138
+ this.sliderValue = (this.options.current - 1) * 100 / (this.options.total - 1)
139
+ this.append(
140
+ this.wrapper = new Element('div', {'class': 'rui-paginator-pages-wrapper'}).append(this.pages = new Paginator.Pages(this)),
141
+ this.slider = new Slider({round: 1})
142
+ );
143
+ this.slider.onChange(this.pages.redraw.bind(this.pages));
144
+ this.slider.setValue(this.sliderValue);
145
+ this.pages.redraw();
146
+ },
147
+
148
+ insertTo: function(element, position) {
149
+ this.$super(element, position);
150
+ this.slider.setValue(this.sliderValue);
151
+ this.pages.redraw();
152
+ return this;
153
+ }
154
+ });
155
+
156
+ Paginator.Pages = new Class(Element, {
157
+ initialize: function(paginator) {
158
+ this.paginator = paginator;
159
+ this.options = paginator.options;
160
+
161
+ this.$super('ul', {'class': 'rui-paginator-pages'});
162
+ },
163
+
164
+ redraw: function(event) {
165
+ var value = this.paginator.slider.getValue();
166
+ var current_page = (value * (this.options.total - 1) / 100).round() + 1;
167
+
168
+ this.clean();
169
+ var page = new Paginator.Page(this.paginator, current_page);
170
+ this.append(page);
171
+
172
+ var width = this.paginator.wrapper.dimensions().width;
173
+ var page_width = page.dimensions().width;
174
+ var pages_width = width - page_width/2;
175
+ var track_point = value * pages_width / 100;
176
+
177
+ var i = current_page - 1;
178
+ while (i > 0 && this.dimensions().width < track_point) {
179
+ this.insert(new Paginator.Page(this.paginator, i), 'top');
180
+ i--;
181
+ }
182
+
183
+ var i = current_page + 1;
184
+ while (i <= this.options.total && this.dimensions().width < pages_width) {
185
+ this.append(new Paginator.Page(this.paginator, i));
186
+ i++;
187
+ }
188
+ }
189
+ });
190
+
191
+ Paginator.Page = new Class(Element, {
192
+ initialize: function(paginator, page) {
193
+ this.paginator = paginator;
194
+ this.options = paginator.options;
195
+
196
+ this.$super('li');
197
+
198
+ if (this.options.current == page) {
199
+ this.setClass('current');
200
+ this.insert(new Element('span').update(page));
201
+ } else {
202
+ var link = {'href': '#'}
203
+ RightJS.Object.each(this.options.link, function(key, value) {
204
+ link[key] = value.replace('%{page}', page).replace('%25%7Bpage%7D', page);
205
+ });
206
+
207
+ this.insert(new Element('a', link).update(page));
208
+ }
209
+ }
210
+ });
211
+
212
+ $(document).on({
213
+ ready: function() {
214
+ $$('.rui-paginator').each(function(element) {
215
+ if (!(element instanceof Paginator)) {
216
+ element = new Paginator(element);
217
+ }
218
+ });
219
+ }
220
+ });
221
+
222
+ return Paginator;
223
+ })(document, Math, RightJS);
@@ -8,3 +8,15 @@ var association_done = function(event) {
8
8
  this.prev('input[type=text]').value('').enable();
9
9
  this.next('input[type=hidden]').value('');
10
10
  });
11
+
12
+ 'a[data-dialog-uri]'.on('click', function(event) {
13
+ if (event.which != 1) return;
14
+ event.stop();
15
+
16
+ var dialog = event.find('.rui-dialog');
17
+ if (!dialog || !(dialog instanceof Dialog)) {
18
+ dialog = new Dialog({expandable: true});
19
+ }
20
+
21
+ dialog.load(this.get('data-dialog-uri'));
22
+ });
@@ -25,6 +25,7 @@
25
25
  });
26
26
 
27
27
  'a[data-confirm], a[data-method], a[data-remote]'.on('click', function(event) {
28
+ if (event.which != 1) return;
28
29
  if (cancel(this)) { event.stop(); return; }
29
30
 
30
31
  var method = this.get('data-method') || 'get',
@@ -1,8 +1,8 @@
1
1
  /**
2
- * RightJS-UI: Autocompleter
2
+ * RightJS-UI Autocompleter v2.2.1
3
3
  * http://rightjs.org/ui/autocompleter
4
4
  *
5
- * Copyright (C) 2010 Nikolay Nemshilov
5
+ * Copyright (C) 2010-2011 Nikolay Nemshilov
6
6
  */
7
7
  var Autocompleter = RightJS.Autocompleter = (function(document, RightJS) {
8
8
  /**
@@ -13,26 +13,6 @@ var Autocompleter = RightJS.Autocompleter = (function(document, RightJS) {
13
13
  * Copyright (C) 2010-2011 Nikolay Nemshilov
14
14
  */
15
15
 
16
- /**
17
- * Autocompleter initializer
18
- *
19
- * Copyright (C) 2010 Nikolay Nemshilov
20
- */
21
- var R = RightJS,
22
- $ = RightJS.$,
23
- $w = RightJS.$w,
24
- $E = RightJS.$E,
25
- Xhr = RightJS.Xhr,
26
- RegExp = RightJS.RegExp,
27
- isArray = RightJS.isArray;
28
-
29
-
30
-
31
-
32
-
33
-
34
-
35
-
36
16
  /**
37
17
  * The widget units constructor
38
18
  *
@@ -97,12 +77,16 @@ function Widget(tag_name, methods) {
97
77
  * @return void
98
78
  */
99
79
  setOptions: function(options, element) {
100
- element = element || this;
101
- RightJS.Options.setOptions.call(this,
102
- RightJS.Object.merge(options, eval("("+(
80
+ if (element) {
81
+ options = RightJS.Object.merge(options, new Function("return "+(
103
82
  element.get('data-'+ this.key) || '{}'
104
- )+")"))
105
- );
83
+ ))());
84
+ }
85
+
86
+ if (options) {
87
+ RightJS.Options.setOptions.call(this, RightJS.Object.merge(this.options, options));
88
+ }
89
+
106
90
  return this;
107
91
  }
108
92
  });
@@ -114,7 +98,7 @@ function Widget(tag_name, methods) {
114
98
  var Klass = new RightJS.Class(AbstractWidget, methods);
115
99
 
116
100
  // creating the widget related shortcuts
117
- RightJS.Observer.createShortcuts(Klass.prototype, Klass.EVENTS || []);
101
+ RightJS.Observer.createShortcuts(Klass.prototype, Klass.EVENTS || RightJS([]));
118
102
 
119
103
  return Klass;
120
104
  }
@@ -309,6 +293,26 @@ function Toggler_re_position(element, where, resize) {
309
293
  target.setStyle('visibility:visible').hide(null);
310
294
  }
311
295
 
296
+ /**
297
+ * Autocompleter initializer
298
+ *
299
+ * Copyright (C) 2010 Nikolay Nemshilov
300
+ */
301
+ var R = RightJS,
302
+ $ = RightJS.$,
303
+ $w = RightJS.$w,
304
+ $E = RightJS.$E,
305
+ Xhr = RightJS.Xhr,
306
+ RegExp = RightJS.RegExp,
307
+ isArray = RightJS.isArray;
308
+
309
+
310
+
311
+
312
+
313
+
314
+
315
+
312
316
  /**
313
317
  * The RightJS UI Autocompleter unit base class
314
318
  *
@@ -318,7 +322,7 @@ var Autocompleter = new Widget('UL', {
318
322
  include: Toggler,
319
323
 
320
324
  extend: {
321
- version: '2.2.0',
325
+ version: '2.2.1',
322
326
 
323
327
  EVENTS: $w('show hide update load select done'),
324
328
 
@@ -397,7 +401,7 @@ var Autocompleter = new Widget('UL', {
397
401
 
398
402
  if (current) {
399
403
  current.radioClass('current');
400
- this.input.setValue(R(current.html()).stripTags());
404
+ this.input.setValue(current._.textContent || current._.innerText);
401
405
  this.fire('done');
402
406
  }
403
407
 
@@ -602,20 +606,20 @@ $(document).on({
602
606
  }
603
607
  }
604
608
  });
605
- (function() {
606
- var style = document.createElement('style'),
607
- rules = document.createTextNode(" *.rui-dd-menu, *.rui-dd-menu li{margin:0;padding:0;border:none;background:none;list-style:none;font-weight:normal;float:none} *.rui-dd-menu{display:none;position:absolute;z-index:9999;background:white;border:1px solid #BBB;border-radius:.2em;-moz-border-radius:.2em;-webkit-border-radius:.2em;box-shadow:#DDD .2em .2em .4em;-moz-box-shadow:#DDD .2em .2em .4em;-webkit-box-shadow:#DDD .2em .2em .4em} *.rui-dd-menu li{padding:.2em .4em;border-top:none;border-bottom:none;cursor:pointer} *.rui-dd-menu li.current{background:#DDD} *.rui-dd-menu li:hover{background:#EEE}dl.rui-dd-menu dt{padding:.3em .5em;cursor:default;font-weight:bold;font-style:italic;color:#444;background:#EEE}dl.rui-dd-menu dd li{padding-left:1.5em}div.rui-spinner,div.rui-spinner div{margin:0;padding:0;border:none;background:none;list-style:none;font-weight:normal;float:none;display:inline-block; *display:inline; *zoom:1;border-radius:.12em;-moz-border-radius:.12em;-webkit-border-radius:.12em}div.rui-spinner{text-align:center;white-space:nowrap;background:#EEE;border:1px solid #DDD;height:1.2em;padding:0 .2em}div.rui-spinner div{width:.4em;height:70%;background:#BBB;margin-left:1px}div.rui-spinner div:first-child{margin-left:0}div.rui-spinner div.glowing{background:#777}div.rui-re-anchor{margin:0;padding:0;background:none;border:none;float:none;display:inline;position:absolute;z-index:9999}.rui-autocompleter{border-top-color:#DDD !important;border-top-left-radius:0 !important;border-top-right-radius:0 !important;-moz-border-radius-topleft:0 !important;-moz-border-radius-topright:0 !important;-webkit-border-top-left-radius:0 !important;-webkit-border-top-right-radius:0 !important}.rui-autocompleter-spinner{border:none !important;background:none !important;position:absolute;z-index:9999}.rui-autocompleter-spinner div{margin-top:.2em !important; *margin-top:0.1em !important}");
608
609
 
609
- style.type = 'text/css';
610
610
 
611
- if(style.styleSheet) {
612
- style.styleSheet.cssText = rules.nodeValue;
613
- } else {
614
- style.appendChild(rules);
615
- }
611
+ var embed_style = document.createElement('style'),
612
+ embed_rules = document.createTextNode("*.rui-dd-menu, *.rui-dd-menu li{margin:0;padding:0;border:none;background:none;list-style:none;font-weight:normal;float:none} *.rui-dd-menu{display:none;position:absolute;z-index:9999;background:white;border:1px solid #BBB;border-radius:.2em;-moz-border-radius:.2em;-webkit-border-radius:.2em;box-shadow:#DDD .2em .2em .4em;-moz-box-shadow:#DDD .2em .2em .4em;-webkit-box-shadow:#DDD .2em .2em .4em} *.rui-dd-menu li{padding:.2em .4em;border-top:none;border-bottom:none;cursor:pointer} *.rui-dd-menu li.current{background:#DDD} *.rui-dd-menu li:hover{background:#EEE}dl.rui-dd-menu dt{padding:.3em .5em;cursor:default;font-weight:bold;font-style:italic;color:#444;background:#EEE}dl.rui-dd-menu dd li{padding-left:1.5em}div.rui-spinner,div.rui-spinner div{margin:0;padding:0;border:none;background:none;list-style:none;font-weight:normal;float:none;display:inline-block; *display:inline; *zoom:1;border-radius:.12em;-moz-border-radius:.12em;-webkit-border-radius:.12em}div.rui-spinner{text-align:center;white-space:nowrap;background:#EEE;border:1px solid #DDD;height:1.2em;padding:0 .2em}div.rui-spinner div{width:.4em;height:70%;background:#BBB;margin-left:1px}div.rui-spinner div:first-child{margin-left:0}div.rui-spinner div.glowing{background:#777}div.rui-re-anchor{margin:0;padding:0;background:none;border:none;float:none;display:inline;position:absolute;z-index:9999}.rui-autocompleter{border-top-color:#DDD !important;border-top-left-radius:0 !important;border-top-right-radius:0 !important;-moz-border-radius-topleft:0 !important;-moz-border-radius-topright:0 !important;-webkit-border-top-left-radius:0 !important;-webkit-border-top-right-radius:0 !important}.rui-autocompleter-spinner{border:none !important;background:none !important;position:absolute;z-index:9999}.rui-autocompleter-spinner div{margin-top:.2em !important; *margin-top:0.1em !important}");
613
+
614
+ embed_style.type = 'text/css';
615
+ document.getElementsByTagName('head')[0].appendChild(embed_style);
616
+
617
+ if(embed_style.styleSheet) {
618
+ embed_style.styleSheet.cssText = embed_rules.nodeValue;
619
+ } else {
620
+ embed_style.appendChild(embed_rules);
621
+ }
616
622
 
617
- document.getElementsByTagName('head')[0].appendChild(style);
618
- })();
619
623
 
620
624
  return Autocompleter;
621
625
  })(document, RightJS);