bhf 0.6.15 → 0.6.20

Sign up to get free protection for your applications and to get access to all the features.
Files changed (46) hide show
  1. checksums.yaml +4 -4
  2. data/{vendor → app}/assets/images/bhf/ajax_loader.gif +0 -0
  3. data/{vendor → app}/assets/images/bhf/bg.png +0 -0
  4. data/{vendor → app}/assets/images/bhf/mooeditable-toolbarbuttons-tango.png +0 -0
  5. data/{vendor → app}/assets/images/bhf/pictos.png +0 -0
  6. data/{vendor → app}/assets/images/bhf/pictos_2x.png +0 -0
  7. data/{vendor → app}/assets/images/bhf/small_ajax_loader.gif +0 -0
  8. data/{vendor → app}/assets/images/bhf/small_ajax_loader_h.gif +0 -0
  9. data/{vendor → app}/assets/images/bhf/wmd-buttons.png +0 -0
  10. data/{vendor → app}/assets/images/logo_bhf.svg +0 -0
  11. data/app/assets/javascripts/bhf/application.js +285 -0
  12. data/{vendor → app}/assets/javascripts/bhf/classes/AjaxEdit.js +28 -13
  13. data/app/assets/javascripts/bhf/classes/AjaxEditStack.js +52 -0
  14. data/{vendor → app}/assets/javascripts/bhf/classes/Ajaxify.js +0 -0
  15. data/{vendor → app}/assets/javascripts/bhf/classes/ArrayFields.js +0 -0
  16. data/app/assets/javascripts/bhf/classes/FormHelper.js +97 -0
  17. data/{vendor → app}/assets/javascripts/bhf/classes/Locale.de-DE.js +0 -0
  18. data/{vendor → app}/assets/javascripts/bhf/classes/Locale.en-US.js +0 -0
  19. data/{vendor → app}/assets/javascripts/bhf/classes/MooEditable.js +0 -0
  20. data/{vendor → app}/assets/javascripts/bhf/classes/MultipleFields.js +0 -0
  21. data/{vendor → app}/assets/javascripts/bhf/classes/Picker.js +0 -0
  22. data/{vendor → app}/assets/javascripts/bhf/classes/Picker_Attach.js +0 -0
  23. data/{vendor → app}/assets/javascripts/bhf/classes/Picker_Date.js +0 -0
  24. data/app/assets/javascripts/bhf/classes/PlatformHelper.js +59 -0
  25. data/{vendor → app}/assets/javascripts/bhf/classes/Setlatlng.js +0 -0
  26. data/{vendor → app}/assets/javascripts/bhf/classes/showdown.js +0 -0
  27. data/{vendor → app}/assets/javascripts/bhf/classes/wmd.js +0 -0
  28. data/{vendor → app}/assets/javascripts/bhf/mootools-core-1.4.5-full-compat.js +0 -0
  29. data/{vendor → app}/assets/javascripts/bhf/mootools-more-1.4.0.1.js +0 -0
  30. data/{vendor/assets/javascripts/bhf/mootools_ujs_ap.js → app/assets/javascripts/bhf/mootools_ujs.js} +1 -1
  31. data/{vendor → app}/assets/stylesheets/bhf/MooEditable.css.scss +0 -0
  32. data/{vendor → app}/assets/stylesheets/bhf/application.css.sass +16 -11
  33. data/{vendor → app}/assets/stylesheets/bhf/functions.css.sass +0 -0
  34. data/{vendor → app}/assets/stylesheets/bhf/reset.css.sass +0 -0
  35. data/{vendor → app}/assets/stylesheets/bhf/typo.css.scss +0 -0
  36. data/app/controllers/bhf/pages_controller.rb +1 -1
  37. data/app/views/bhf/entries/_form.haml +1 -1
  38. data/app/views/bhf/pages/macro/column/_hash.haml +1 -1
  39. data/app/views/layouts/bhf/application.haml +3 -4
  40. data/app/views/layouts/bhf/quick_edit.haml +9 -7
  41. data/config/routes.rb +1 -0
  42. data/lib/bhf/platform.rb +3 -1
  43. metadata +36 -35
  44. data/lib/bhf/view_helpers.rb +0 -19
  45. data/vendor/assets/javascripts/bhf/application.js +0 -372
  46. data/vendor/assets/javascripts/bhf/classes/BrowserUpdate.js +0 -185
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 6396dd43cc2d51a062538a692225b11f26050f16
4
- data.tar.gz: 0b633f0d8293dc708920b633d637b5d24816366c
3
+ metadata.gz: df4b4e02c7a3ff276bf5fa43b43f1945ef314175
4
+ data.tar.gz: 3768bbb9588dd1e84e2b24b3515fde68af523702
5
5
  SHA512:
6
- metadata.gz: 45bd83105b6cb3243d96368f30e108bc0950d9591506a0b1d592418190f460c7103fbe2a655a5cf49408220636d1bcde7aeb0674a6611cb9d6ec50729402259a
7
- data.tar.gz: d2ccfcae7e0cfa433abe7cecae13b8af14c00a3adeddabaa2488b90e55e0b2d1b8be521d508d581ed4464b5788ce9d226636096048c524691dd96f9fcb8a9f49
6
+ metadata.gz: 500ae8b85c83571f366179a8870a2adf50a1ddbed89cb8be8cdc29cf19d9042983627c1ac7018890dc502c0e46eb297a5a46674dc503cb2249c948ac247c4299
7
+ data.tar.gz: 7ba90cdc49913a0e395ab94090bc93918d1b4d607949b03f962a8fd32b478cf52365b7fe54b8ee937a5ae69d14ef382749354c9afd40ab70cb8c9a2196d232a4
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -0,0 +1,285 @@
1
+ //= require turbolinks
2
+ //= require ./mootools-core-1.4.5-full-compat.js
3
+ //= require ./mootools-more-1.4.0.1.js
4
+ //= require ./mootools_ujs
5
+ //= require_tree ./classes/
6
+
7
+ var initHelper = function(callback){
8
+ var scopedCallback = function(){
9
+ callback(document.body);
10
+ };
11
+ document.addEventListener('page:load', scopedCallback);
12
+ window.addEvent('domready', scopedCallback);
13
+ window.addEvent('platformUpdate', callback);
14
+ window.addEvent('quickEditReady', callback);
15
+ };
16
+
17
+ (function(){
18
+ var stackIndexCounter = 0;
19
+ var lang = document.html.get('lang');
20
+ Locale.use(lang = (lang === 'en') ? 'en-US' : lang = lang+'-'+lang.toUpperCase());
21
+
22
+ var ajaxNote = new Ajaxify();
23
+ document.addEventListener('page:fetch', function(){
24
+ ajaxNote.loading();
25
+ });
26
+
27
+ var editStack = new AjaxEditStack();
28
+
29
+ initHelper(function(mainScope){
30
+ var quickEditArray = [];
31
+ var ajaxEditOptions;
32
+
33
+ ajaxNote.setup();
34
+
35
+ rails.applyEvents(mainScope);
36
+
37
+ var jsForm = new FormHelper();
38
+ mainScope.getElements('.js_bhf_form').each(function(form){
39
+ jsForm.setup(form);
40
+ });
41
+
42
+ var sharedAjaxEditOptions = {
43
+ onFailure: function(){
44
+ ajaxNote.failure();
45
+ },
46
+ onStartRequest: function(form){
47
+ ajaxNote.loading();
48
+ },
49
+ onFormInjected: function(form){
50
+ jsForm.setup(form);
51
+ scrollContent();
52
+ ajaxNote.success();
53
+ },
54
+ onSave: function(form){
55
+ // TODO: visual flash of the quick_edit content on success
56
+ // also after update, create and duplicate
57
+ ajaxNote.success();
58
+ },
59
+ onBeforeSubmit: function(){
60
+ ajaxNote.loading();
61
+ jsForm.wysiwyg.each(function(editor){
62
+ editor.saveContent();
63
+ });
64
+ }
65
+ };
66
+
67
+ var platforms = mainScope.getElements('.platform');
68
+ var mainForm = mainScope.getElementById('main_form');
69
+
70
+ if (platforms.length) {
71
+ ajaxEditOptions = Object.merge({
72
+ onSuccessAndChange: function(json){
73
+ var tr = this.wrapElement;
74
+ tr.getElements('td').each(function(td){
75
+ var name = td.get('data-column-name');
76
+ if ( ! name) { return; }
77
+ var a = td.getElement('a.quick_edit');
78
+ (a ? a : td).innerHTML = json[name] || '';
79
+ });
80
+ },
81
+ onSuccessAndNext: function(json){
82
+ var tr = this.wrapElement;
83
+ var qe;
84
+ var nextTr = tr.getNext('tr');
85
+
86
+ if (nextTr) {
87
+ editStack.removeAllStacks();
88
+ editStack.addEditBrick(ajaxEditOptions, nextTr.getElement('a'), nextTr);
89
+ }
90
+ else {
91
+ var platform = tr.getParent('.platform');
92
+ var loadMore = platform.getElement('.load_more');
93
+ if (loadMore) {
94
+ trIndex = tr.getParent('tbody').getElements('tr').indexOf(tr);
95
+ updatePlatform(loadMore.get('href'), platform, function(){
96
+ platform.getElements('tbody tr').each(function(newTr, index){
97
+ if (trIndex === index) {
98
+ nextTr = newTr.getNext('tr');
99
+
100
+ editStack.removeAllStacks();
101
+ editStack.addEditBrick(ajaxEditOptions, nextTr.getElement('a'), nextTr);
102
+ }
103
+ });
104
+ });
105
+ }
106
+ else {
107
+ nextTr = platform.getElements('tbody tr')[0];
108
+
109
+ editStack.removeAllStacks();
110
+ editStack.addEditBrick(ajaxEditOptions, nextTr.getElement('a'), nextTr);
111
+ }
112
+ }
113
+ }
114
+ }, sharedAjaxEditOptions);
115
+
116
+
117
+ var updatePlatform = function(href, platform, callback){
118
+ ajaxNote.loading();
119
+ new Request.HTML({
120
+ method: 'get',
121
+ url: href,
122
+ onFailure: function(){
123
+ ajaxNote.failure();
124
+ },
125
+ onSuccess: function(a, b, html){
126
+ platform.innerHTML = html;
127
+ if (callback) {
128
+ callback.call();
129
+ }
130
+ window.fireEvent('platformUpdate', [platform.getParent()]);
131
+ }
132
+ }).send();
133
+ };
134
+
135
+ platforms.each(function(p){
136
+ new PlatformHelper(p, {
137
+ onPaginationStart: function(link){
138
+ updatePlatform(link.get('href'), link.getParent('.platform'));
139
+ },
140
+ onQuickEditStart: function(link){
141
+ editStack.removeAllStacks();
142
+ editStack.addEditBrick(ajaxEditOptions, link, link.getParent('tr'));
143
+ },
144
+ onSearch: function(){
145
+ ajaxNote.loading();
146
+ },
147
+ onSearchFailure: function(){
148
+ ajaxNote.failure();
149
+ },
150
+ onSearchSuccess: function(){
151
+ window.fireEvent('platformUpdate', [p.getParent()]);
152
+ }
153
+ });
154
+ });
155
+ }
156
+ else if (mainForm) {
157
+ ajaxEditOptions = Object.merge({
158
+ successAndAdd: function(json){
159
+ var relation = this.wrapElement.getPrevious('.relation');
160
+ relation.getPrevious('.empty').addClass('hide');
161
+ if (relation.hasClass('has_one') || relation.hasClass('embeds_one')) {
162
+ relation.getNext('.add_field').addClass('hide');
163
+ }
164
+ relation.adopt(
165
+ new Element('li').adopt(
166
+ new Element('a.quick_edit', {text: json.to_bhf_s || '', href: json.edit_path})
167
+ )
168
+ );
169
+ },
170
+ successAndChange: function(json){
171
+ this.wrapElement.set('text', json.to_bhf_s || '');
172
+ },
173
+ successAndNext: function(json){
174
+ var a = this.wrapElement;
175
+ var li = a.getParent('li');
176
+ if ( ! li) {
177
+ this.close();
178
+ return;
179
+ }
180
+ var holder = li.getNext('li');
181
+
182
+ if ( ! holder) {
183
+ holder = li.getParent('ul');
184
+ }
185
+
186
+ editStack.removeAllStacks();
187
+ editStack.addEditBrick(ajaxEditOptions, holder.getElement('a'));
188
+ }
189
+ }, sharedAjaxEditOptions);
190
+
191
+ mainForm.getElements('.quick_edit').addEvent('click', function(e){
192
+ e.preventDefault();
193
+
194
+ editStack.removeAllStacks();
195
+ editStack.addEditBrick(ajaxEditOptions, this);
196
+ });
197
+ mainForm.getElements('.delete').addEvent('click', function(e){
198
+ e.target.addEvents({
199
+ 'ajax:success': function(html){
200
+ var relation = e.target.getParent('.relation');
201
+ if (relation.getElements('li').length < 2) {
202
+ relation.getPrevious('.empty').removeClass('hide');
203
+ if (relation.hasClass('has_one') || relation.hasClass('embeds_one')) {
204
+ relation.getNext('.add_field').removeClass('hide');
205
+ }
206
+ }
207
+ e.target.getParent('li').dispose();
208
+ },
209
+ 'ajax:failure': function(html){
210
+ alert(Locale.get('Messages.warning'));
211
+ }
212
+ });
213
+ });
214
+ }
215
+ else if (mainScope.hasClass('quick_edit_holder')) {
216
+ ajaxEditOptions = Object.merge({
217
+ successAndAdd: function(json){
218
+ var relation = this.wrapElement.getPrevious('.relation');
219
+ relation.getPrevious('.empty').addClass('hide');
220
+ if (relation.hasClass('has_one') || relation.hasClass('embeds_one')) {
221
+ relation.getNext('.add_field').addClass('hide');
222
+ }
223
+ relation.adopt(
224
+ new Element('li').adopt(
225
+ new Element('a.quick_edit', {text: json.to_bhf_s || '', href: json.edit_path})
226
+ )
227
+ );
228
+ },
229
+ onSuccessAndChange: function(json){
230
+ this.wrapElement.set('text', json.to_bhf_s || '');
231
+ },
232
+ onClosed: function(){
233
+ editStack.removeStack();
234
+ },
235
+ hideNext: true
236
+ }, sharedAjaxEditOptions);
237
+
238
+ mainScope.getElements('.quick_edit').addEvent('click', function(e){
239
+ e.preventDefault();
240
+ editStack.addStack();
241
+ editStack.addEditBrick(ajaxEditOptions, this);
242
+ });
243
+ }
244
+
245
+
246
+ var windowHight = document.body.clientHeight;
247
+ window.onresize = function(e){
248
+ windowHight = document.body.clientHeight;
249
+ };
250
+ var scrollContent = function(){
251
+ quickEditArray.each(function(quickEdit){
252
+ var innerForm = quickEdit.holder.getElement('form');
253
+ if ( ! innerForm) { return; }
254
+ var scroll = document.body.scrollTop - 83;
255
+ if (scroll + innerForm.getSize().y > windowHight) { return; }
256
+ quickEdit.holder.setStyle('padding-top', scroll);
257
+ });
258
+ };
259
+ // window.onscroll = scrollContent;
260
+
261
+
262
+ mainScope.getElements('.sortable').each(function(sortableElems){
263
+ new Sortables(sortableElems, {
264
+ handle: '.handle',
265
+ onStart: function(element, clone){
266
+ element.addClass('dragged');
267
+ },
268
+ onComplete: function(element){
269
+ element.removeClass('dragged');
270
+ new Request({
271
+ method: 'put',
272
+ url: this.element.getParent('tbody').get('data-sort-url')
273
+ }).send({data: {order: this.serialize()}});
274
+ }
275
+ });
276
+ });
277
+
278
+ var fm = $('flash_massages');
279
+ if (fm) {
280
+ fm.removeClass.delay(10000, fm, 'show');
281
+ }
282
+
283
+ ajaxNote.success();
284
+ });
285
+ })();
@@ -1,13 +1,14 @@
1
1
  var AjaxEdit = new Class({
2
2
  version: 0.2,
3
-
3
+
4
4
  options: {
5
- holderParent: document.body
5
+ holderParent: 'content',
6
+ hideNext: false
6
7
  },
7
-
8
+
8
9
  Implements: [Options, Events],
9
-
10
- setup: function(_options) {
10
+
11
+ initialize: function(_options){
11
12
  this.setOptions(_options);
12
13
  this.holder = new Element('div.quick_edit_holder').addEvents({
13
14
  'click:relay(.open)': function(e){
@@ -32,7 +33,7 @@ var AjaxEdit = new Class({
32
33
  }.bind(this)
33
34
  });
34
35
  },
35
-
36
+
36
37
  startEdit: function(element, wrapElement){
37
38
  this.clean();
38
39
  this.wrapElement = wrapElement ? wrapElement : element;
@@ -50,15 +51,20 @@ var AjaxEdit = new Class({
50
51
  onSuccess: function(responseTree, responseElements, responseHTML, responseJavaScript){
51
52
  this.injectForm(responseHTML);
52
53
  eval(responseJavaScript);
54
+
55
+ if (this.options.hideNext) {
56
+ this.holder.getElement('.save_and_next').addClass('hide');
57
+ }
58
+
53
59
  window.fireEvent('quickEditReady', [this.holder]);
54
60
  }.bind(this)
55
61
  }).send();
56
62
  },
57
-
63
+
58
64
  submit: function(eventNames){
59
65
  var form = this.holder.getElement('form');
60
66
  this.fireEvent('beforeSubmit');
61
-
67
+
62
68
  new Request.JSON({
63
69
  method: form.get('method'),
64
70
  url: form.get('action'),
@@ -83,24 +89,33 @@ var AjaxEdit = new Class({
83
89
  }.bind(this)
84
90
  }).send({data: form});
85
91
  },
86
-
92
+
87
93
  disableButtons: function(){
88
94
  this.holder.getElements('.open, .cancel, .save_and_next, .save').set('disabled', 'disabled');
89
95
  },
90
-
96
+
91
97
  clean: function(){
92
98
  document.body.getElements('.live_edit').removeClass('live_edit');
93
99
  },
94
-
100
+
95
101
  close: function(){
96
102
  this.clean();
97
103
  this.holder.dispose();
104
+ this.fireEvent('closed')
98
105
  },
99
-
106
+
100
107
  injectForm: function(form){
101
108
  this.holder.innerHTML = form;
102
- this.holder.inject(this.options.holderParent);
109
+ this.holder.inject($(this.options.holderParent));
103
110
 
104
111
  this.fireEvent('formInjected', [this.holder]);
112
+ },
113
+
114
+ hide: function(){
115
+ this.holder.addClass('collapsed');
116
+ },
117
+
118
+ show: function(){
119
+ this.holder.removeClass('collapsed');
105
120
  }
106
121
  });
@@ -0,0 +1,52 @@
1
+ var AjaxEditStack = new Class({
2
+ version: 0.1,
3
+
4
+ options: {
5
+ },
6
+ bricksArray: [],
7
+ bricksIndex: 0,
8
+
9
+ Implements: [Options, Events],
10
+
11
+ initialize: function(_options) {
12
+ this.setOptions(_options);
13
+ },
14
+ addEditBrick: function(editOptions, link, linkParent){
15
+ var qi = this.bricksIndex;
16
+ var qe = this.bricksArray[qi];
17
+ if ( ! qe) {
18
+ qe = new AjaxEdit(editOptions);
19
+ this.bricksArray.push(qe);
20
+ }
21
+
22
+ this.bricksArray.each(function(b, i){
23
+ if (i === qi) {
24
+ b.show();
25
+ }
26
+ else if (i > qi) {
27
+ b.close();
28
+ }
29
+ });
30
+
31
+ qe.startEdit(link, linkParent);
32
+ },
33
+ addStack: function(){
34
+ this.bricksIndex = this.bricksIndex + 1;
35
+ this.bricksArray.each(function(b){
36
+ b.hide();
37
+ });
38
+ },
39
+ removeStack: function(){
40
+ this.bricksArray[this.bricksIndex] = undefined;
41
+ this.bricksIndex = this.bricksIndex - 1;
42
+ this.bricksArray = this.bricksArray.clean();
43
+ (this.bricksArray.getLast() || {show: function(){}}).show();
44
+ },
45
+ removeAllStacks: function(){
46
+ this.bricksArray.clean().each(function(b, i){
47
+ b.close();
48
+ });
49
+ this.bricksArray = [];
50
+ this.bricksIndex = 0;
51
+ }
52
+ });
@@ -0,0 +1,97 @@
1
+ var FormHelper = new Class({
2
+ version: 0.1,
3
+
4
+ wysiwyg: [],
5
+
6
+ options: {
7
+ },
8
+
9
+ // Implements: [Options, Events],
10
+
11
+ setup: function(_object, _options) {
12
+ if ( ! _object) { return; }
13
+ // this.setOptions(_options);
14
+ var scope = _object;
15
+
16
+ scope.getElements('.wysiwyg').each(function(elem){
17
+ this.wysiwyg.push(elem.mooEditable());
18
+ }.bind(this));
19
+
20
+ scope.getElements('.multiple_field').each(function(elem){
21
+ new MultipleFields(elem);
22
+ });
23
+ scope.getElements('.array_holder').each(function(elem){
24
+ new ArrayFields(elem);
25
+ });
26
+
27
+ scope.getElements('.picker').each(function(input){
28
+ var options = {
29
+ timePicker: true,
30
+ format: '%B %d, %Y %H:%M'
31
+ };
32
+ if (input.hasClass('date')) {
33
+ options = {
34
+ timePicker: false,
35
+ format: '%B %d, %Y'
36
+ };
37
+ }
38
+ else if (input.hasClass('time')) {
39
+ options = {
40
+ pickOnly: 'time',
41
+ format: '%H:%M'
42
+ };
43
+ }
44
+
45
+ var hiddenInput = input.clone();
46
+ input.value = new Date().parse(input.value).format(options.format);
47
+ input.erase('name');
48
+ hiddenInput.set('type', 'hidden').inject(input, 'after');
49
+
50
+ new Picker.Date(input, Object.merge({
51
+ onSelect: function(date){
52
+ hiddenInput.value = date.format('db');
53
+ }
54
+ }, options));
55
+ });
56
+
57
+ scope.getElements('.wmd_editor').each(function(mdTa){
58
+ var headline, toggleHtmlPreview, toggleLivePreview, livePreview, htmlPreview;
59
+
60
+ var togglePreview = function(e){
61
+ var htmlMode = e.target.hasClass('toggle_html_preview');
62
+ livePreview.toggleClass('hide', htmlMode);
63
+ htmlPreview.toggleClass('hide', !htmlMode);
64
+ toggleLivePreview.toggleClass('active', !htmlMode);
65
+ toggleHtmlPreview.toggleClass('active', htmlMode);
66
+ };
67
+
68
+ headline = new Element('h6.preview_switch', {text: 'Preview'});
69
+
70
+ toggleHtmlPreview = new Element('span.toggle_html_preview', {text: 'HTML'})
71
+ .addEvent('click', togglePreview)
72
+ .inject(headline);
73
+ toggleLivePreview = new Element('span.toggle_live_preview', {text: 'Live'})
74
+ .addEvent('click', togglePreview)
75
+ .inject(headline);
76
+
77
+ headline.inject(mdTa, 'after');
78
+
79
+ livePreview = new Element('div.wmd-preview.hide').inject(headline, 'after');
80
+ htmlPreview = new Element('div.wmd-output.hide').inject(livePreview, 'after');
81
+
82
+ new WMDEditor({
83
+ input: mdTa,
84
+ button_bar: new Element('div').inject(mdTa, 'before'),
85
+ preview: livePreview,
86
+ output: htmlPreview,
87
+ buttons: 'bold italic link image ol ul heading hr undo redo help',
88
+ modifierKeys: false,
89
+ autoFormatting: false
90
+ });
91
+ });
92
+
93
+ scope.getElements('.map_data_lat').each(function(lat){
94
+ new Setlatlng(lat);
95
+ });
96
+ }
97
+ });
@@ -0,0 +1,59 @@
1
+ var PlatformHelper = new Class({
2
+ version: 0.1,
3
+
4
+ options: {
5
+ },
6
+
7
+ Implements: [Options, Events],
8
+
9
+ initialize: function(_object, _options) {
10
+ if ( ! _object) { return; }
11
+ this.setOptions(_options);
12
+ var scope = _object;
13
+ var _this = this;
14
+
15
+ scope.getElements('.pagination a, thead a').addEvent('click', function(e){
16
+ e.preventDefault();
17
+ _this.fireEvent('paginationStart', [this])
18
+ });
19
+ scope.getElements('.search').addEvent('submit', function(e){
20
+ _this.fireEvent('search');
21
+ e.preventDefault();
22
+ var hidden_search = this.getElement('.hidden_search');
23
+ if (hidden_search) {
24
+ hidden_search.destroy();
25
+ }
26
+ new Request.HTML({
27
+ method: 'get',
28
+ url: e.target.get('action'),
29
+ onFailure: function(){
30
+ _this.fireEvent('searchFailure');
31
+ },
32
+ onSuccess: function(a, b, html){
33
+ scope.innerHTML = html;
34
+ _this.fireEvent('searchSuccess')
35
+ }
36
+ }).send({data: e.target});
37
+ });
38
+ scope.getElements('.quick_edit').addEvent('click', function(e){
39
+ e.preventDefault();
40
+ _this.fireEvent('quickEditStart', [this]);
41
+ });
42
+ scope.getElements('.action a').addEvent('click', function(e){
43
+ this.addClass('clicked');
44
+ setTimeout(function(){
45
+ this.removeClass('clicked');
46
+ }.bind(this), 1500);
47
+ });
48
+ scope.getElements('.delete').addEvent('click', function(e){
49
+ e.target.addEvents({
50
+ 'ajax:success': function(html){
51
+ this.getParent('tr').dispose();
52
+ },
53
+ 'ajax:failure': function(html){
54
+ alert(Locale.get('Messages.warning'));
55
+ }
56
+ });
57
+ });
58
+ }
59
+ });
@@ -37,7 +37,7 @@ window.addEvent('domready', function(){
37
37
  applyEvents: function(el){
38
38
  el = $(el || document.body);
39
39
  var apply = function(selector, action, callback){
40
- el.addEvent(action + ':relay(' + selector + ')', callback);
40
+ el.getElements(selector).addEvent(action, callback);
41
41
  };
42
42
 
43
43
  apply('form[data-remote="true"]', 'submit', rails.handleRemote);