Commit 7993d1cd9f642f03e494c216d090f01bcf057b36
1 parent
fe93e0cf
Exists in
master
and in
1 other branch
Fix issue with Jquery >= 1.9
See #500
Showing
7 changed files
with
57 additions
and
58 deletions
Show diff stats
Gemfile
@@ -130,7 +130,9 @@ group :assets do | @@ -130,7 +130,9 @@ group :assets do | ||
130 | gem 'execjs' | 130 | gem 'execjs' |
131 | gem 'therubyracer', :platform => :ruby # C Ruby (MRI) or Rubinius, but NOT Windows | 131 | gem 'therubyracer', :platform => :ruby # C Ruby (MRI) or Rubinius, but NOT Windows |
132 | gem 'uglifier', '>= 1.0.3' | 132 | gem 'uglifier', '>= 1.0.3' |
133 | - gem 'jquery-rails' | 133 | + # We can't upgrade because not compatible to jquery >= 1.9. |
134 | + # To do that, we need fix the rails.js | ||
135 | + gem 'jquery-rails', '~> 2.1.4' | ||
134 | gem 'pjax_rails' | 136 | gem 'pjax_rails' |
135 | gem 'underscore-rails' | 137 | gem 'underscore-rails' |
136 | gem 'turbo-sprockets-rails3' | 138 | gem 'turbo-sprockets-rails3' |
Gemfile.lock
@@ -132,7 +132,7 @@ GEM | @@ -132,7 +132,7 @@ GEM | ||
132 | has_scope (0.5.1) | 132 | has_scope (0.5.1) |
133 | hashie (1.2.0) | 133 | hashie (1.2.0) |
134 | highline (1.6.19) | 134 | highline (1.6.19) |
135 | - hike (1.2.2) | 135 | + hike (1.2.3) |
136 | hipchat (0.9.0) | 136 | hipchat (0.9.0) |
137 | httparty | 137 | httparty |
138 | httparty | 138 | httparty |
@@ -152,7 +152,7 @@ GEM | @@ -152,7 +152,7 @@ GEM | ||
152 | has_scope (~> 0.5.0) | 152 | has_scope (~> 0.5.0) |
153 | responders (~> 0.9) | 153 | responders (~> 0.9) |
154 | journey (1.0.4) | 154 | journey (1.0.4) |
155 | - jquery-rails (3.0.0) | 155 | + jquery-rails (2.1.4) |
156 | railties (>= 3.0, < 5.0) | 156 | railties (>= 3.0, < 5.0) |
157 | thor (>= 0.14, < 2.0) | 157 | thor (>= 0.14, < 2.0) |
158 | json (1.8.0) | 158 | json (1.8.0) |
@@ -191,7 +191,7 @@ GEM | @@ -191,7 +191,7 @@ GEM | ||
191 | bundler (>= 1.0.0) | 191 | bundler (>= 1.0.0) |
192 | rails (>= 3.0.0) | 192 | rails (>= 3.0.0) |
193 | railties (>= 3.0.0) | 193 | railties (>= 3.0.0) |
194 | - multi_json (1.7.4) | 194 | + multi_json (1.7.6) |
195 | multi_xml (0.5.3) | 195 | multi_xml (0.5.3) |
196 | multipart-post (1.2.0) | 196 | multipart-post (1.2.0) |
197 | net-scp (1.1.1) | 197 | net-scp (1.1.1) |
@@ -406,7 +406,7 @@ DEPENDENCIES | @@ -406,7 +406,7 @@ DEPENDENCIES | ||
406 | htmlentities | 406 | htmlentities |
407 | httparty | 407 | httparty |
408 | inherited_resources | 408 | inherited_resources |
409 | - jquery-rails | 409 | + jquery-rails (~> 2.1.4) |
410 | kaminari (>= 0.14.1) | 410 | kaminari (>= 0.14.1) |
411 | launchy | 411 | launchy |
412 | lighthouse-api | 412 | lighthouse-api |
app/assets/javascripts/application.js.erb
1 | +// We can't use jquery > 1.9 | ||
1 | //= require jquery | 2 | //= require jquery |
2 | //= require underscore | 3 | //= require underscore |
4 | +// This rails.js version is not like the original. | ||
5 | +// We can't upgrade to the official version | ||
3 | //= require rails | 6 | //= require rails |
4 | //= require form | 7 | //= require form |
5 | //= require jquery.pjax | 8 | //= require jquery.pjax |
app/assets/javascripts/errbit.js
@@ -14,21 +14,12 @@ $(function() { | @@ -14,21 +14,12 @@ $(function() { | ||
14 | 14 | ||
15 | bindRequiredPasswordMarks(); | 15 | bindRequiredPasswordMarks(); |
16 | 16 | ||
17 | - $('#watcher_name').live("click", function() { | ||
18 | - $(this).closest('form').find('.show').removeClass('show'); | ||
19 | - $('#app_watchers_attributes_0_user_id').addClass('show'); | ||
20 | - }); | ||
21 | - | ||
22 | - $('#watcher_email').live("click", function() { | ||
23 | - $(this).closest('form').find('.show').removeClass('show'); | ||
24 | - $('#app_watchers_attributes_0_email').addClass('show'); | ||
25 | - }); | ||
26 | - | ||
27 | - $('a.copy_config').live("click", function() { | 17 | + // On page apps/:app_id/edit |
18 | + $('a.copy_config').on("click", function() { | ||
28 | $('select.choose_other_app').show().focus(); | 19 | $('select.choose_other_app').show().focus(); |
29 | }); | 20 | }); |
30 | 21 | ||
31 | - $('select.choose_other_app').live("change", function() { | 22 | + $('select.choose_other_app').on("change", function() { |
32 | var loc = window.location; | 23 | var loc = window.location; |
33 | window.location.href = loc.protocol + "//" + loc.host + loc.pathname + | 24 | window.location.href = loc.protocol + "//" + loc.host + loc.pathname + |
34 | "?copy_attributes_from=" + $(this).val(); | 25 | "?copy_attributes_from=" + $(this).val(); |
@@ -82,7 +73,7 @@ $(function() { | @@ -82,7 +73,7 @@ $(function() { | ||
82 | function toggleProblemsCheckboxes() { | 73 | function toggleProblemsCheckboxes() { |
83 | var checkboxToggler = $('#toggle_problems_checkboxes'); | 74 | var checkboxToggler = $('#toggle_problems_checkboxes'); |
84 | 75 | ||
85 | - checkboxToggler.live("click", function() { | 76 | + checkboxToggler.on("click", function() { |
86 | $('input[name^="problems"]').each(function() { | 77 | $('input[name^="problems"]').each(function() { |
87 | this.checked = checkboxToggler.get(0).checked; | 78 | this.checked = checkboxToggler.get(0).checked; |
88 | }); | 79 | }); |
@@ -125,7 +116,7 @@ $(function() { | @@ -125,7 +116,7 @@ $(function() { | ||
125 | $('td.backtrace_separator').hide(); | 116 | $('td.backtrace_separator').hide(); |
126 | } | 117 | } |
127 | // Show external backtrace lines when clicking separator | 118 | // Show external backtrace lines when clicking separator |
128 | - $('td.backtrace_separator span').live('click', show_external_backtrace); | 119 | + $('td.backtrace_separator span').on('click', show_external_backtrace); |
129 | // Hide external backtrace on page load | 120 | // Hide external backtrace on page load |
130 | hide_external_backtrace(); | 121 | hide_external_backtrace(); |
131 | 122 |
app/assets/javascripts/form.js
@@ -19,7 +19,8 @@ $(function(){ | @@ -19,7 +19,8 @@ $(function(){ | ||
19 | }); | 19 | }); |
20 | 20 | ||
21 | function activateNestedForms() { | 21 | function activateNestedForms() { |
22 | - $('.nested-wrapper').each(function(){ | 22 | + var wrapper = $('.nested-wrapper') |
23 | + wrapper.each(function(){ | ||
23 | var wrapper = $(this); | 24 | var wrapper = $(this); |
24 | 25 | ||
25 | makeNestedItemsDestroyable(wrapper); | 26 | makeNestedItemsDestroyable(wrapper); |
@@ -28,7 +29,7 @@ function activateNestedForms() { | @@ -28,7 +29,7 @@ function activateNestedForms() { | ||
28 | addLink.click(appendNestedItem); | 29 | addLink.click(appendNestedItem); |
29 | wrapper.append(addLink); | 30 | wrapper.append(addLink); |
30 | }); | 31 | }); |
31 | - $('.nested a.remove-nested').live('click',removeNestedItem); | 32 | + wrapper.on('click','.nested a.remove-nested', removeNestedItem); |
32 | } | 33 | } |
33 | 34 | ||
34 | function makeNestedItemsDestroyable(wrapper) { | 35 | function makeNestedItemsDestroyable(wrapper) { |
@@ -80,7 +81,7 @@ function activateTypeSelector(field_class, section_class) { | @@ -80,7 +81,7 @@ function activateTypeSelector(field_class, section_class) { | ||
80 | $('div.'+field_class+' > div.'+section_class).not('.chosen').find('input') | 81 | $('div.'+field_class+' > div.'+section_class).not('.chosen').find('input') |
81 | .attr('disabled','disabled').val(''); | 82 | .attr('disabled','disabled').val(''); |
82 | 83 | ||
83 | - $('div.'+field_class+' input[name*=type]').live('click', function(){ | 84 | + $('div.'+field_class+' input[name*=type]').on('click', function(){ |
84 | // Look for section in 'data-section', and fall back to 'value' | 85 | // Look for section in 'data-section', and fall back to 'value' |
85 | var chosen = $(this).data("section") || $(this).val(); | 86 | var chosen = $(this).data("section") || $(this).val(); |
86 | var wrapper = $(this).closest('.nested'); | 87 | var wrapper = $(this).closest('.nested'); |
app/assets/javascripts/jquery.alerts.js
@@ -12,7 +12,7 @@ | @@ -12,7 +12,7 @@ | ||
12 | // $.jAlert( message, [title, callback] ) | 12 | // $.jAlert( message, [title, callback] ) |
13 | // $.jConfirm( message, [title, callback] ) | 13 | // $.jConfirm( message, [title, callback] ) |
14 | // $.jPrompt( message, [value, title, callback] ) | 14 | // $.jPrompt( message, [value, title, callback] ) |
15 | -// | 15 | +// |
16 | // History: | 16 | // History: |
17 | // | 17 | // |
18 | // 1.00 - Released (29 December 2008) | 18 | // 1.00 - Released (29 December 2008) |
@@ -22,16 +22,16 @@ | @@ -22,16 +22,16 @@ | ||
22 | // 1.2 - global methods removed. | 22 | // 1.2 - global methods removed. |
23 | // | 23 | // |
24 | // License: | 24 | // License: |
25 | -// | 25 | +// |
26 | // This plugin is dual-licensed under the GNU General Public License and the MIT License and | 26 | // This plugin is dual-licensed under the GNU General Public License and the MIT License and |
27 | -// is copyright 2008 A Beautiful Site, LLC. | 27 | +// is copyright 2008 A Beautiful Site, LLC. |
28 | // | 28 | // |
29 | (function($) { | 29 | (function($) { |
30 | - | 30 | + |
31 | $.alerts = { | 31 | $.alerts = { |
32 | - | 32 | + |
33 | // These properties can be read/written by accessing $.alerts.propertyName from your scripts at any time | 33 | // These properties can be read/written by accessing $.alerts.propertyName from your scripts at any time |
34 | - | 34 | + |
35 | verticalOffset: -75, // vertical offset of the dialog from center screen, in pixels | 35 | verticalOffset: -75, // vertical offset of the dialog from center screen, in pixels |
36 | horizontalOffset: 0, // horizontal offset of the dialog from center screen, in pixels/ | 36 | horizontalOffset: 0, // horizontal offset of the dialog from center screen, in pixels/ |
37 | repositionOnResize: true, // re-centers the dialog on window resize | 37 | repositionOnResize: true, // re-centers the dialog on window resize |
@@ -46,37 +46,37 @@ | @@ -46,37 +46,37 @@ | ||
46 | confirm: 'Confirm', | 46 | confirm: 'Confirm', |
47 | prompt: 'Prompt' | 47 | prompt: 'Prompt' |
48 | }, | 48 | }, |
49 | - | 49 | + |
50 | // Public methods | 50 | // Public methods |
51 | - | 51 | + |
52 | alert: function(message, title, callback) { | 52 | alert: function(message, title, callback) { |
53 | if (! title) title = $.alerts.titles.alert; | 53 | if (! title) title = $.alerts.titles.alert; |
54 | $.alerts._show(title, message, null, 'alert', function(result) { | 54 | $.alerts._show(title, message, null, 'alert', function(result) { |
55 | if (callback) callback(result); | 55 | if (callback) callback(result); |
56 | }); | 56 | }); |
57 | }, | 57 | }, |
58 | - | 58 | + |
59 | confirm: function(message, title, callback) { | 59 | confirm: function(message, title, callback) { |
60 | if (! title) title = $.alerts.titles.confirm; | 60 | if (! title) title = $.alerts.titles.confirm; |
61 | $.alerts._show(title, message, null, 'confirm', function(result) { | 61 | $.alerts._show(title, message, null, 'confirm', function(result) { |
62 | if (callback) callback(result); | 62 | if (callback) callback(result); |
63 | }); | 63 | }); |
64 | }, | 64 | }, |
65 | - | 65 | + |
66 | prompt: function(message, value, title, callback) { | 66 | prompt: function(message, value, title, callback) { |
67 | if (! title) title = $.alerts.titles.prompt; | 67 | if (! title) title = $.alerts.titles.prompt; |
68 | $.alerts._show(title, message, value, 'prompt', function(result) { | 68 | $.alerts._show(title, message, value, 'prompt', function(result) { |
69 | if(callback) callback(result); | 69 | if(callback) callback(result); |
70 | }); | 70 | }); |
71 | }, | 71 | }, |
72 | - | 72 | + |
73 | // Private methods | 73 | // Private methods |
74 | - | 74 | + |
75 | _show: function(title, msg, value, type, callback) { | 75 | _show: function(title, msg, value, type, callback) { |
76 | - | 76 | + |
77 | $.alerts._hide(); | 77 | $.alerts._hide(); |
78 | $.alerts._overlay('show'); | 78 | $.alerts._overlay('show'); |
79 | - | 79 | + |
80 | $("BODY").append( | 80 | $("BODY").append( |
81 | '<div id="popup_container">' + | 81 | '<div id="popup_container">' + |
82 | '<h1 id="popup_title"></h1>' + | 82 | '<h1 id="popup_title"></h1>' + |
@@ -84,32 +84,34 @@ | @@ -84,32 +84,34 @@ | ||
84 | '<div id="popup_message"></div>' + | 84 | '<div id="popup_message"></div>' + |
85 | '</div>' + | 85 | '</div>' + |
86 | '</div>'); | 86 | '</div>'); |
87 | - | 87 | + |
88 | if( $.alerts.dialogClass ) $("#popup_container").addClass($.alerts.dialogClass); | 88 | if( $.alerts.dialogClass ) $("#popup_container").addClass($.alerts.dialogClass); |
89 | - | 89 | + |
90 | // IE6 Fix | 90 | // IE6 Fix |
91 | - var pos = ($.browser.msie && parseInt($.browser.version, 10) <= 6 ) ? 'absolute' : 'fixed'; | ||
92 | - | 91 | + // No more $.browser in Jquery > 1,9 and not support IE 6 |
92 | + // var pos = ($.browser.msie && parseInt($.browser.version, 10) <= 6 ) ? 'absolute' : 'fixed'; | ||
93 | + var pos = 'fixed'; | ||
94 | + | ||
93 | $("#popup_container").css({ | 95 | $("#popup_container").css({ |
94 | position: pos, | 96 | position: pos, |
95 | zIndex: 99999, | 97 | zIndex: 99999, |
96 | padding: 0, | 98 | padding: 0, |
97 | margin: 0 | 99 | margin: 0 |
98 | }); | 100 | }); |
99 | - | 101 | + |
100 | $("#popup_title").text(title); | 102 | $("#popup_title").text(title); |
101 | $("#popup_content").addClass(type); | 103 | $("#popup_content").addClass(type); |
102 | $("#popup_message").text(msg); | 104 | $("#popup_message").text(msg); |
103 | $("#popup_message").html( $("#popup_message").text().replace(/\n/g, '<br />') ); | 105 | $("#popup_message").html( $("#popup_message").text().replace(/\n/g, '<br />') ); |
104 | - | 106 | + |
105 | $("#popup_container").css({ | 107 | $("#popup_container").css({ |
106 | minWidth: $("#popup_container").outerWidth(), | 108 | minWidth: $("#popup_container").outerWidth(), |
107 | maxWidth: $("#popup_container").outerWidth() | 109 | maxWidth: $("#popup_container").outerWidth() |
108 | }); | 110 | }); |
109 | - | 111 | + |
110 | $.alerts._reposition(); | 112 | $.alerts._reposition(); |
111 | $.alerts._maintainPosition(true); | 113 | $.alerts._maintainPosition(true); |
112 | - | 114 | + |
113 | switch( type ) { | 115 | switch( type ) { |
114 | case 'alert': | 116 | case 'alert': |
115 | $("#popup_message").after('<div id="popup_panel"><input type="button" value="' + $.alerts.okButton + '" id="popup_ok" /></div>'); | 117 | $("#popup_message").after('<div id="popup_panel"><input type="button" value="' + $.alerts.okButton + '" id="popup_ok" /></div>'); |
@@ -158,20 +160,20 @@ | @@ -158,20 +160,20 @@ | ||
158 | break; | 160 | break; |
159 | default: break; | 161 | default: break; |
160 | } | 162 | } |
161 | - | 163 | + |
162 | // Make draggable | 164 | // Make draggable |
163 | if ($.alerts.draggable && $.fn.draggable) { | 165 | if ($.alerts.draggable && $.fn.draggable) { |
164 | $("#popup_container").draggable({ handle: $("#popup_title") }); | 166 | $("#popup_container").draggable({ handle: $("#popup_title") }); |
165 | $("#popup_title").css({ cursor: 'move' }); | 167 | $("#popup_title").css({ cursor: 'move' }); |
166 | } | 168 | } |
167 | }, | 169 | }, |
168 | - | 170 | + |
169 | _hide: function() { | 171 | _hide: function() { |
170 | $("#popup_container").remove(); | 172 | $("#popup_container").remove(); |
171 | $.alerts._overlay('hide'); | 173 | $.alerts._overlay('hide'); |
172 | $.alerts._maintainPosition(false); | 174 | $.alerts._maintainPosition(false); |
173 | }, | 175 | }, |
174 | - | 176 | + |
175 | _overlay: function(status) { | 177 | _overlay: function(status) { |
176 | switch( status ) { | 178 | switch( status ) { |
177 | case 'show': | 179 | case 'show': |
@@ -194,23 +196,23 @@ | @@ -194,23 +196,23 @@ | ||
194 | default: break; | 196 | default: break; |
195 | } | 197 | } |
196 | }, | 198 | }, |
197 | - | 199 | + |
198 | _reposition: function() { | 200 | _reposition: function() { |
199 | var top = (($(window).height() / 2) - ($("#popup_container").outerHeight() / 2)) + $.alerts.verticalOffset; | 201 | var top = (($(window).height() / 2) - ($("#popup_container").outerHeight() / 2)) + $.alerts.verticalOffset; |
200 | var left = (($(window).width() / 2) - ($("#popup_container").outerWidth() / 2)) + $.alerts.horizontalOffset; | 202 | var left = (($(window).width() / 2) - ($("#popup_container").outerWidth() / 2)) + $.alerts.horizontalOffset; |
201 | if( top < 0 ) top = 0; | 203 | if( top < 0 ) top = 0; |
202 | if( left < 0 ) left = 0; | 204 | if( left < 0 ) left = 0; |
203 | - | 205 | + |
204 | // IE6 fix | 206 | // IE6 fix |
205 | - if( $.browser.msie && parseInt($.browser.version, 10) <= 6 ) top = top + $(window).scrollTop(); | ||
206 | - | 207 | + // if( $.browser.msie && parseInt($.browser.version, 10) <= 6 ) top = top + $(window).scrollTop(); |
208 | + | ||
207 | $("#popup_container").css({ | 209 | $("#popup_container").css({ |
208 | top: top + 'px', | 210 | top: top + 'px', |
209 | left: left + 'px' | 211 | left: left + 'px' |
210 | }); | 212 | }); |
211 | $("#popup_overlay").height( $(document).height() ); | 213 | $("#popup_overlay").height( $(document).height() ); |
212 | }, | 214 | }, |
213 | - | 215 | + |
214 | _maintainPosition: function(status) { | 216 | _maintainPosition: function(status) { |
215 | if( $.alerts.repositionOnResize ) { | 217 | if( $.alerts.repositionOnResize ) { |
216 | switch(status) { | 218 | switch(status) { |
@@ -224,7 +226,7 @@ | @@ -224,7 +226,7 @@ | ||
224 | } | 226 | } |
225 | } | 227 | } |
226 | } | 228 | } |
227 | - | 229 | + |
228 | }; | 230 | }; |
229 | - | ||
230 | -})(jQuery); | ||
231 | \ No newline at end of file | 231 | \ No newline at end of file |
232 | + | ||
233 | +})(jQuery); |
app/assets/javascripts/rails.js
1 | /** | 1 | /** |
2 | * Unobtrusive scripting adapter for jQuery | 2 | * Unobtrusive scripting adapter for jQuery |
3 | * | 3 | * |
4 | - * Requires jQuery 1.6.0 or later. | 4 | + * Requires jQuery 1.6.0. Not compatible to jquery > 1.9 |
5 | * https://github.com/rails/jquery-ujs | 5 | * https://github.com/rails/jquery-ujs |
6 | 6 | ||
7 | * Uploading file using rails.js | 7 | * Uploading file using rails.js |
@@ -131,11 +131,11 @@ | @@ -131,11 +131,11 @@ | ||
131 | method = element.data('method'); | 131 | method = element.data('method'); |
132 | url = element.data('url'); | 132 | url = element.data('url'); |
133 | data = element.serialize(); | 133 | data = element.serialize(); |
134 | - if (element.data('params')) data = data + "&" + element.data('params'); | 134 | + if (element.data('params')) data = data + "&" + element.data('params'); |
135 | } else { | 135 | } else { |
136 | method = element.data('method'); | 136 | method = element.data('method'); |
137 | url = element.attr('href'); | 137 | url = element.attr('href'); |
138 | - data = element.data('params') || null; | 138 | + data = element.data('params') || null; |
139 | } | 139 | } |
140 | 140 | ||
141 | options = { | 141 | options = { |