ajax 1.1.6 → 1.1.7

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.
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: ./
3
3
  specs:
4
- ajax (1.1.6)
4
+ ajax (1.1.7)
5
5
  json
6
6
  rack
7
7
 
@@ -10,7 +10,8 @@ As of May 2010 Ajax is being used live in production on kazaa.com[http://www.kaz
10
10
 
11
11
  == Changelog
12
12
 
13
- * v1.1.6: Fix redirect_to to handle Rails 3 resourceful redirects
13
+ * v1.1.7: Fix layout handling for Rails 3
14
+ * v1.1.6: Fix redirect_to to handle resourceful redirects. [Rails 3]
14
15
  * v1.1.5: Fix inclusion of +controller+ and +layout+ in <tt>Ajax-Info</tt> response header. Improve RSpec 1.* integration
15
16
  * v1.1.4: Fix RSpec 2 integration
16
17
  * v1.1.3: Guard against possible nil values for the redirect_to url and the referrers
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.1.6
1
+ 1.1.7
@@ -39,7 +39,7 @@ module Ajax
39
39
  # layout and render that. If it can't be found, the default layout
40
40
  # is used.
41
41
  def ajax_layout(template_name)
42
- write_inheritable_attribute(:ajax_layout, template_name)
42
+ (self.is_a?(Class) ? self : self.class).write_inheritable_attribute(:ajax_layout, template_name)
43
43
  end
44
44
  end
45
45
 
@@ -103,9 +103,11 @@ module Ajax
103
103
 
104
104
  default = pick_layout(options)
105
105
  default = default.path_without_format_and_extension unless default.nil?
106
- ajax_layout = _layout_for_ajax(default)
107
- ajax_layout = ajax_layout.path_without_format_and_extension unless ajax_layout.nil?
108
- options[:layout] = ajax_layout unless ajax_layout.nil?
106
+ if ajax_layout = _layout_for_ajax(default)
107
+ if ajax_layout = _find_ajax_layout(ajax_layout)
108
+ options[:layout] = ajax_layout.path_without_format_and_extension
109
+ end
110
+ end
109
111
  end
110
112
  render_without_ajax(options, extra_options, &block)
111
113
  end
@@ -121,18 +123,14 @@ module Ajax
121
123
  end
122
124
  end
123
125
 
124
- # Specialize the default layout finder. Try to use a layout in layouts/ajax
125
- # as the default layout, if one exists.
126
- def _default_layout(require_layout = false)
127
- if require_layout || !request.xhr? || !Ajax.is_enabled?
128
- super
126
+
127
+ def _layout_for_option(name)
128
+ default = super
129
+ if !request.xhr? || !Ajax.is_enabled?
130
+ default
129
131
  else
130
- layout_name = super
131
- if ajax_layout = _layout_for_ajax(layout_name)
132
- ajax_layout.virtual_path
133
- else
134
- layout_name
135
- end
132
+ ajax_layout = _layout_for_ajax(default)
133
+ ajax_layout && template_exists?(ajax_layout) ? ajax_layout : default
136
134
  end
137
135
  end
138
136
  end
@@ -147,8 +145,17 @@ module Ajax
147
145
  #
148
146
  # +controller+ is the result of calling ActionController#controller_name, so
149
147
  # if your controller is ApplicationController the value will be <tt>'application'</tt>.
148
+ #
149
+ # +layout+ is the name of the layout without any path or extension. So for example if
150
+ # layouts/simple.html.erb or layouts/ajax/simple.html.erb are rendered the
151
+ # value of +layout+ would be <tt>'simple'</tt> in both cases.
150
152
  def serialize_ajax_info
151
- Ajax.set_header(response, :layout, Ajax.app.rails?(3) ? _layout : active_layout)
153
+ layout_name = if Ajax.app.rails?(3)
154
+ @_rendered_layout && @_rendered_layout.variable_name
155
+ else
156
+ active_layout
157
+ end
158
+ Ajax.set_header(response, :layout, layout_name)
152
159
  Ajax.set_header(response, :controller, self.class.controller_name)
153
160
  response.headers['Ajax-Info'] = Ajax.send(:serialize_hash, response.headers['Ajax-Info'])
154
161
  end
@@ -245,15 +252,26 @@ END
245
252
  ajax_layout = if ajax_layout.nil? && default.nil?
246
253
  nil
247
254
  elsif ajax_layout.nil? && !default.nil? # look for one with the default name in layouts/ajax
248
- "layouts/ajax/#{default.sub(/layouts(\/)?/, '')}"
249
- elsif ajax_layout && !(ajax_layout =~ /^layouts\/ajax/) # look for it in layouts/ajax
250
- "layouts/ajax/#{ajax_layout}"
251
- else # look as is
255
+ if default =~ /^layouts\/ajax\//
256
+ default
257
+ elsif !(default =~ /^ajax\//)
258
+ "ajax/#{default.sub(/layouts(\/)?/, '')}"
259
+ else
260
+ default
261
+ end
262
+ elsif ajax_layout.include?(?/) # path to specific layout
252
263
  ajax_layout
264
+ else # layout name, look in ajax/
265
+ "ajax/#{ajax_layout}"
253
266
  end
267
+ ajax_layout = ajax_layout =~ /\blayouts/ ? ajax_layout : "layouts/#{ajax_layout}" if ajax_layout
268
+ ajax_layout
269
+ end
270
+
271
+ def _find_ajax_layout(ajax_layout)
254
272
  Ajax.app.rails?(3) ? find_template(ajax_layout) : find_layout(ajax_layout, 'html') if !ajax_layout.nil?
255
273
  rescue ::ActionView::MissingTemplate
256
- Ajax.logger.info("[ajax] no layout found in layouts/ajax. Using #{default}.")
274
+ Ajax.logger.warn("[ajax] layout #{ajax_layout.inspect} not found. Using default.")
257
275
  nil
258
276
  end
259
277
  end
@@ -10,6 +10,16 @@ module Ajax
10
10
  initializer 'ajax.action_integration' do
11
11
  ActiveSupport.on_load :action_view do
12
12
  include Ajax::ActionView
13
+
14
+ self.class_eval do
15
+ unless instance_methods.include?('_render_layout_with_tracking')
16
+ def _render_layout_with_tracking(layout, locals, &block)
17
+ controller.instance_variable_set(:@_rendered_layout, layout)
18
+ _render_layout_without_tracking(layout, locals, &block)
19
+ end
20
+ alias_method_chain :_render_layout, :tracking
21
+ end
22
+ end
13
23
  end
14
24
  ActiveSupport.on_load :action_controller do
15
25
  include Ajax::ActionController
@@ -28,4 +38,4 @@ module Ajax
28
38
  Ajax.logger = ::Rails.logger
29
39
  end
30
40
  end
31
- end
41
+ end
@@ -682,10 +682,12 @@ var Ajax = function(options) {
682
682
  */
683
683
  self.hideLoadingImage = function() {
684
684
  // check if a new request has already started
685
- if (self.current_request && self.current_request.status == 0) {
686
- console.log("[ajax] aborting hideLoadingImage.. ");
687
- return;
688
- }
685
+ try {
686
+ if (self.current_request && self.current_request.status == 0) {
687
+ console.log("[AJAX] aborting hideLoadingImage.. ");
688
+ return;
689
+ }
690
+ } catch(e) {}
689
691
  if (!self.show_loading_image) { return; }
690
692
  if (!self.hide_loading_image_callback) {
691
693
  $(document).unbind('mousemove', self.updateImagePosition);
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ajax
3
3
  version: !ruby/object:Gem::Version
4
- hash: 31
4
+ hash: 29
5
5
  prerelease:
6
6
  segments:
7
7
  - 1
8
8
  - 1
9
- - 6
10
- version: 1.1.6
9
+ - 7
10
+ version: 1.1.7
11
11
  platform: ruby
12
12
  authors:
13
13
  - Karl Varga
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-05-11 00:00:00 -07:00
18
+ date: 2011-05-13 00:00:00 -07:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency