sproutcore 1.10.0.rc.1 → 1.10.0.rc.2

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.
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- MmExM2Q0ODdjYmE2ZDE2MDJlMmVjN2NhM2M2YWVhOTU0NDcyZjA1YQ==
4
+ ZDg1MjQwYWRlZjUzZGFmNjFkMGUyYjFjYmFhN2NjNGM3MzM1M2IyZg==
5
5
  data.tar.gz: !binary |-
6
- OTgwODlkZjc3NWZkNjhlZjk4ODJhZjY4YTk1OTdkZDBiNzQ5OTQxZg==
6
+ NWEzMzgxNjhlYTJjOTBlMDQxNTgzYTYxOTNmYzE4MTU4ZmViOGQ2MA==
7
7
  !binary "U0hBNTEy":
8
8
  metadata.gz: !binary |-
9
- NWY3YjliYWNhNzBjZGU1YmYwM2JjMjRmNThiZDIxYzVlYjIxNTJmZjFkMTY0
10
- ODM4YmZkYzM4M2JlMWRiYTgzM2JhMGZlZWQyNWZiN2Q5YWU1ODBlZjBkNjE0
11
- MGQyYmEyYzc3NDI2NjE5ZjdhOWZlMDE3NTQwMWIyN2FjMGI1ZWY=
9
+ M2VkY2E5ZTBkNTY3MTdjZTk0YmY1YmU4YjAyYzFkYzc5Nzg1YzQxN2ViZmEz
10
+ MDlkMDBkOTZmMWY1YzNkMTgwNWNiNTcyNjcyOGJmMjY5YzViYTkyYmRiY2Uz
11
+ Mzk3OWI0ZjZhMTI4YjYyZTZhNzRmZDkxYjIwMjZkZGYwN2NmOTI=
12
12
  data.tar.gz: !binary |-
13
- MzljZGUwZWIwOWNhZjYwNWEzYTE3OWJkYzdmY2RhZmJiNWNlN2NjZjc3NDc3
14
- NjljMWZlYjI0MmJjYTRjMGU2OGYyMzI0M2UyNDQ3MjcwYTljOTkzMzA4NTEy
15
- NjM4OWYyYzg2MDU2MDk5NzQyZWNmMDYyOGRmM2Y4OTliOTkxMGI=
13
+ OWVlMzRiOGMxNGRkMWVmYWRjMmU5MTRjYjFjYTExZTYyZjRmYmU5NDZmZDBj
14
+ ZjRiMTA4YmNlZWJjZjMwMzZlNjFjZDYwNjgzZmY2YWZjZTYzOGRiNzYyNjg1
15
+ NzFhNDQ1ZGY4NjU0N2I4MWE3OTJjMzRhMDNlNTM4ZTA1YzBlZTE=
data/VERSION.yml CHANGED
@@ -1,4 +1,4 @@
1
1
  ---
2
2
  :major: 1
3
3
  :minor: 10
4
- :patch: 0.rc.1
4
+ :patch: 0.rc.2
data/bin/sc-build CHANGED
@@ -1,16 +1,13 @@
1
1
  #!/usr/bin/env ruby
2
- #
3
- # This file was generated by Bundler.
4
- #
5
- # The application 'sc-build' is installed as part of a gem, and
6
- # this file is here to facilitate running it.
7
- #
2
+ # ===========================================================================
3
+ # Project: Abbot - SproutCore Build Tools
4
+ # Copyright: ©2010 Apple Inc.
5
+ # portions copyright @2006-2011 Strobe Inc.
6
+ # and contributors
7
+ # ===========================================================================
8
8
 
9
- require 'pathname'
10
- ENV['BUNDLE_GEMFILE'] ||= File.expand_path("../../Gemfile",
11
- Pathname.new(__FILE__).realpath)
9
+ require "sproutcore"
12
10
 
13
- require 'rubygems'
14
- require 'bundler/setup'
11
+ SC::Tools.invoke 'build'
15
12
 
16
- load Gem.bin_path('sproutcore', 'sc-build')
13
+ # EOF
data/bin/sc-build-number CHANGED
@@ -1,16 +1,13 @@
1
1
  #!/usr/bin/env ruby
2
- #
3
- # This file was generated by Bundler.
4
- #
5
- # The application 'sc-build-number' is installed as part of a gem, and
6
- # this file is here to facilitate running it.
7
- #
2
+ # ===========================================================================
3
+ # Project: Abbot - SproutCore Build Tools
4
+ # Copyright: ©2010 Apple Inc.
5
+ # portions copyright @2006-2011 Strobe Inc.
6
+ # and contributors
7
+ # ===========================================================================
8
8
 
9
- require 'pathname'
10
- ENV['BUNDLE_GEMFILE'] ||= File.expand_path("../../Gemfile",
11
- Pathname.new(__FILE__).realpath)
9
+ require "sproutcore"
12
10
 
13
- require 'rubygems'
14
- require 'bundler/setup'
11
+ SC::Tools.invoke :build_number
15
12
 
16
- load Gem.bin_path('sproutcore', 'sc-build-number')
13
+ # EOF
data/bin/sc-docs CHANGED
@@ -1,16 +1,19 @@
1
1
  #!/usr/bin/env ruby
2
- #
3
- # This file was generated by Bundler.
4
- #
5
- # The application 'sc-docs' is installed as part of a gem, and
6
- # this file is here to facilitate running it.
7
- #
2
+ # -*- coding: utf-8 -*-
3
+ # ===========================================================================
4
+ # Project: Abbot - SproutCore Build Tools
5
+ # Copyright: ©2010 Apple Inc.
6
+ # portions copyright @2006-2011 Strobe Inc.
7
+ # and contributors
8
+ # ===========================================================================
8
9
 
9
- require 'pathname'
10
- ENV['BUNDLE_GEMFILE'] ||= File.expand_path("../../Gemfile",
11
- Pathname.new(__FILE__).realpath)
10
+ require "sproutcore"
12
11
 
13
- require 'rubygems'
14
- require 'bundler/setup'
12
+ begin
13
+ require 'sc_docs/cli'
14
+ ScDocs::CLI.start
15
+ rescue LoadError
16
+ puts "sc-docs is no longer bundled with SproutCore. Please install the sc-docs tool instead."
17
+ end
15
18
 
16
- load Gem.bin_path('sproutcore', 'sc-docs')
19
+ # EOF
data/bin/sc-gen CHANGED
@@ -1,16 +1,13 @@
1
1
  #!/usr/bin/env ruby
2
- #
3
- # This file was generated by Bundler.
4
- #
5
- # The application 'sc-gen' is installed as part of a gem, and
6
- # this file is here to facilitate running it.
7
- #
2
+ # ===========================================================================
3
+ # Project: Abbot - SproutCore Build Tools
4
+ # Copyright: ©2010 Apple Inc.
5
+ # portions copyright @2006-2011 Strobe Inc.
6
+ # and contributors
7
+ # ===========================================================================
8
8
 
9
- require 'pathname'
10
- ENV['BUNDLE_GEMFILE'] ||= File.expand_path("../../Gemfile",
11
- Pathname.new(__FILE__).realpath)
9
+ require "sproutcore"
12
10
 
13
- require 'rubygems'
14
- require 'bundler/setup'
11
+ SC::Tools.invoke 'gen'
15
12
 
16
- load Gem.bin_path('sproutcore', 'sc-gen')
13
+ # EOF
data/bin/sc-init CHANGED
@@ -1,16 +1,13 @@
1
1
  #!/usr/bin/env ruby
2
- #
3
- # This file was generated by Bundler.
4
- #
5
- # The application 'sc-init' is installed as part of a gem, and
6
- # this file is here to facilitate running it.
7
- #
2
+ # ===========================================================================
3
+ # Project: Abbot - SproutCore Build Tools
4
+ # Copyright: ©2010 Apple Inc.
5
+ # portions copyright @2006-2011 Strobe Inc.
6
+ # and contributors
7
+ # ===========================================================================
8
8
 
9
- require 'pathname'
10
- ENV['BUNDLE_GEMFILE'] ||= File.expand_path("../../Gemfile",
11
- Pathname.new(__FILE__).realpath)
9
+ require "sproutcore"
12
10
 
13
- require 'rubygems'
14
- require 'bundler/setup'
11
+ SC::Tools.invoke 'init'
15
12
 
16
- load Gem.bin_path('sproutcore', 'sc-init')
13
+ # EOF
data/bin/sc-manifest CHANGED
@@ -1,16 +1,13 @@
1
1
  #!/usr/bin/env ruby
2
- #
3
- # This file was generated by Bundler.
4
- #
5
- # The application 'sc-manifest' is installed as part of a gem, and
6
- # this file is here to facilitate running it.
7
- #
2
+ # ===========================================================================
3
+ # Project: Abbot - SproutCore Build Tools
4
+ # Copyright: ©2010 Apple Inc.
5
+ # portions copyright @2006-2011 Strobe Inc.
6
+ # and contributors
7
+ # ===========================================================================
8
8
 
9
- require 'pathname'
10
- ENV['BUNDLE_GEMFILE'] ||= File.expand_path("../../Gemfile",
11
- Pathname.new(__FILE__).realpath)
9
+ require "sproutcore"
12
10
 
13
- require 'rubygems'
14
- require 'bundler/setup'
11
+ SC::Tools.invoke :manifest
15
12
 
16
- load Gem.bin_path('sproutcore', 'sc-manifest')
13
+ # EOF
data/bin/sc-server CHANGED
@@ -1,16 +1,13 @@
1
1
  #!/usr/bin/env ruby
2
- #
3
- # This file was generated by Bundler.
4
- #
5
- # The application 'sc-server' is installed as part of a gem, and
6
- # this file is here to facilitate running it.
7
- #
2
+ # ===========================================================================
3
+ # Project: Abbot - SproutCore Build Tools
4
+ # Copyright: ©2010 Apple Inc.
5
+ # portions copyright @2006-2011 Strobe Inc.
6
+ # and contributors
7
+ # ===========================================================================
8
8
 
9
- require 'pathname'
10
- ENV['BUNDLE_GEMFILE'] ||= File.expand_path("../../Gemfile",
11
- Pathname.new(__FILE__).realpath)
9
+ require "sproutcore"
12
10
 
13
- require 'rubygems'
14
- require 'bundler/setup'
11
+ SC::Tools.invoke 'server'
15
12
 
16
- load Gem.bin_path('sproutcore', 'sc-server')
13
+ # EOF
data/bin/sproutcore CHANGED
@@ -1,16 +1,13 @@
1
1
  #!/usr/bin/env ruby
2
- #
3
- # This file was generated by Bundler.
4
- #
5
- # The application 'sproutcore' is installed as part of a gem, and
6
- # this file is here to facilitate running it.
7
- #
2
+ # ===========================================================================
3
+ # Project: Abbot - SproutCore Build Tools
4
+ # Copyright: ©2010 Apple Inc.
5
+ # portions copyright @2006-2011 Strobe Inc.
6
+ # and contributors
7
+ # ===========================================================================
8
8
 
9
- require 'pathname'
10
- ENV['BUNDLE_GEMFILE'] ||= File.expand_path("../../Gemfile",
11
- Pathname.new(__FILE__).realpath)
9
+ require "sproutcore"
12
10
 
13
- require 'rubygems'
14
- require 'bundler/setup'
11
+ SC::Tools.start
15
12
 
16
- load Gem.bin_path('sproutcore', 'sproutcore')
13
+ # EOF
@@ -9,7 +9,10 @@
9
9
  // ========================================================================
10
10
  /*globals module, test, ok, isObj, equals, expects */
11
11
 
12
- var url, request, contents;
12
+ var url, request, contents, test_timeout=2500;
13
+ if(window._phantom) {
14
+ test_timeout=5000;
15
+ }
13
16
 
14
17
  module("SC.Request", {
15
18
 
@@ -135,11 +138,11 @@ test("Test Asynchronous GET Request", function() {
135
138
  window.start();
136
139
  });
137
140
 
141
+ stop(test_timeout); // stops the test runner - wait for response
142
+
138
143
  response = request.send();
139
144
  ok(response !== null, 'request.send() should return a response object');
140
145
  ok(response.get('status')<0, 'response should still not have a return code since this should be async');
141
-
142
- stop(2500); // stops the test runner - wait for response
143
146
  });
144
147
 
145
148
  test("Test Synchronous GET Request", function() {
@@ -169,10 +172,9 @@ test("Test Asynchronous GET Request, auto-deserializing JSON", function() {
169
172
  window.start();
170
173
  });
171
174
 
172
- request.send();
173
-
174
- stop(2500); // stops the test runner
175
+ stop(test_timeout); // stops the test runner
175
176
 
177
+ request.send();
176
178
  });
177
179
 
178
180
  test("Test auto-deserializing malformed JSON", function() {
@@ -197,9 +199,9 @@ test("Test auto-deserializing malformed JSON", function() {
197
199
  window.start();
198
200
  });
199
201
 
200
- request.send();
202
+ stop(test_timeout);
201
203
 
202
- stop(2500);
204
+ request.send();
203
205
  });
204
206
 
205
207
  test("Test Synchronous GET Request, auto-deserializing JSON", function() {
@@ -243,7 +245,7 @@ test("Test Multiple Asynchronous GET Request - two immediate, and two in serial"
243
245
  SC.Request.getUrl(url).notify(this, observer).send();
244
246
  SC.Request.getUrl(url).notify(this, observer).send();
245
247
 
246
- stop(2500); // stops the test runner
248
+ stop(test_timeout); // stops the test runner
247
249
  setTimeout( function(){
248
250
  equals(requestCount, 6, "requestCount should be 6");
249
251
  equals(responseCount, 6, "responseCount should be 6");
@@ -312,13 +314,13 @@ test("Timeouts - SC.Request didReceive callback", function() {
312
314
  }
313
315
  });
314
316
 
317
+ // Stop the test runner and wait for a timeout or a response.
318
+ stop(test_timeout);
319
+
315
320
  SC.RunLoop.begin();
316
321
  timeoutRequest.send();
317
322
  SC.RunLoop.end();
318
323
 
319
- // Stop the test runner and wait for a timeout or a response.
320
- stop(2500);
321
-
322
324
  // In case we never receive a timeout, just start unit testing again after
323
325
  // 500ms.
324
326
  checkstop = setTimeout(function() {
@@ -328,6 +330,9 @@ test("Timeouts - SC.Request didReceive callback", function() {
328
330
  });
329
331
 
330
332
  test("Timeouts - Status listener callback", function() {
333
+ // sanity check
334
+ equals(SC.Request.manager.inflight.length,0,"there should be no inflight requests");
335
+
331
336
  // Make sure timeouts actually fire, and fire when expected.
332
337
  // Point to local server so test works offline
333
338
  var timeoutRequest = SC.Request.getUrl("/"),
@@ -345,12 +350,12 @@ test("Timeouts - Status listener callback", function() {
345
350
  return YES;
346
351
  });
347
352
 
353
+ stop(test_timeout); // stops the test runner
354
+
348
355
  SC.RunLoop.begin();
349
356
  timeoutRequest.send();
350
357
  SC.RunLoop.end();
351
358
 
352
- stop(2500); // stops the test runner
353
-
354
359
  // in case nothing works
355
360
  checkstop = setTimeout(function() {
356
361
  ok(false, 'timeout did not fire at all');
@@ -362,27 +367,34 @@ test("Test Multiple listeners per single status response", function() {
362
367
  var numResponses = 0;
363
368
  var response;
364
369
 
365
- expect(4);
370
+ expect(8);
371
+
372
+ // sanity check
373
+ equals(SC.Request.manager.inflight.length,0,"there should be no inflight requests");
366
374
 
367
375
  request.notify(200, this, function(response) {
368
376
  numResponses++;
369
- ok(true, "Received a response");
370
-
371
- if (numResponses === 2) { window.start(); }
377
+ ok(true, "Received a response on first listener");
372
378
  });
373
379
 
374
380
  request.notify(200, this, function(response) {
375
381
  numResponses++;
376
- ok(true, "Received a response");
377
-
378
- if (numResponses === 2) { window.start(); }
382
+ ok(true, "Received a response on second listener");
379
383
  });
384
+
385
+ setTimeout(function() {
386
+ equals(SC.Request.manager.inflight.length,0,"there should be no inflight requests after the timeout");
387
+ equals(numResponses, 2, "got two notifications");
388
+ if (numResponses === 2) { window.start(); }
389
+ }, ((test_timeout*5) - 500) );
390
+
391
+ // phantomjs (used in integration tests) needs a veeeery long timeout, just for this test
392
+ stop(test_timeout*5); // stops the test runner - wait for response
380
393
 
381
394
  response = request.send();
382
395
  ok(response !== null, 'request.send() should return a response object');
383
396
  ok(response.get('status')<0, 'response should still not have a return code since this should be async');
384
-
385
- stop(2500); // stops the test runner - wait for response
397
+ equals(SC.Request.manager.inflight.length,1,"there should be 1 inflight request after send()");
386
398
  });
387
399
 
388
400
 
@@ -393,6 +405,9 @@ test("Test Multiple listeners per single status response", function() {
393
405
  */
394
406
  test("Multiple arguments passed to notify()", function() {
395
407
  var response;
408
+
409
+ // sanity check
410
+ equals(SC.Request.manager.inflight.length,0,"there should be no inflight requests");
396
411
 
397
412
  request.notify(this, function(response, a, b, c) {
398
413
  equals(a, 'a', "Listener called with argument 'a'");
@@ -408,9 +423,9 @@ test("Multiple arguments passed to notify()", function() {
408
423
  window.start();
409
424
  }, 'a', 'b', 'c');
410
425
 
411
- response = request.send();
426
+ stop(test_timeout); // stops the test runner - wait for response
412
427
 
413
- stop(2500); // stops the test runner - wait for response
428
+ response = request.send();
414
429
  });
415
430
 
416
431
 
@@ -458,9 +473,9 @@ test("Test event listeners on successful request.", function() {
458
473
  window.start();
459
474
  });
460
475
 
461
- response = request.send();
476
+ stop(test_timeout); // stops the test runner - wait for response
462
477
 
463
- stop(2500); // stops the test runner - wait for response
478
+ response = request.send();
464
479
  });
465
480
 
466
481
  if (window.XMLHttpRequestProgressEvent) {
@@ -505,9 +520,9 @@ if (window.XMLHttpRequestProgressEvent) {
505
520
  window.start();
506
521
  });
507
522
 
508
- response = request.send();
523
+ stop(test_timeout); // stops the test runner - wait for response
509
524
 
510
- stop(2500); // stops the test runner - wait for response
525
+ response = request.send();
511
526
  });
512
527
  }
513
528
 
@@ -565,9 +580,9 @@ test("Test upload event listeners on successful request.", function() {
565
580
  body['k' + i] = 'v' + i;
566
581
  }
567
582
 
568
- response = request.send(JSON.stringify(body));
583
+ stop(test_timeout); // stops the test runner - wait for response
569
584
 
570
- stop(2500); // stops the test runner - wait for response
585
+ response = request.send(JSON.stringify(body));
571
586
  });
572
587
 
573
588
 
@@ -1205,7 +1205,12 @@ SC.RenderContext = SC.Builder.create(
1205
1205
  });
1206
1206
 
1207
1207
  (function () {
1208
- var _escapeHTMLRegex = /[&<>]/g, _escapeHTMLMethod = function (match) {
1208
+ // this regex matches all <, > or &, unless & is immediately followed by at last 1 up to 7 alphanumeric
1209
+ // characters and a ;. For instance:
1210
+ // Some evil <script src="evil.js"> but this is legal &amp; these are not & &illegalese;
1211
+ // would become:
1212
+ // Some evil &lt;script src="evil.js"&gt; but this is legal &amp; these are not &amp; &amp;illegalese;
1213
+ var _escapeHTMLRegex = /[<>]|&(?![\d\w#]{1,7};)/g, _escapeHTMLMethod = function (match) {
1209
1214
  switch (match) {
1210
1215
  case '&':
1211
1216
  return '&amp;';
@@ -1218,7 +1223,8 @@ SC.RenderContext = SC.Builder.create(
1218
1223
 
1219
1224
  /**
1220
1225
  Helper method escapes the passed string to ensure HTML is displayed as
1221
- plain text. You should make sure you pass all user-entered data through
1226
+ plain text while preserving HTML entities like &apos; , &agrave;, etc.
1227
+ You should make sure you pass all user-entered data through
1222
1228
  this method to avoid errors. You can also do this with the text() helper
1223
1229
  method on a render context.
1224
1230
 
@@ -13,6 +13,14 @@ test("Escaping HTML", function() {
13
13
  equals(output, '&lt;p&gt;HTML!&lt;/p&gt;&lt;script&gt;alert(\'hi\');&lt;/script&gt; &amp; Hello, World!', "Properly escapes HTML");
14
14
  });
15
15
 
16
+ module("Render Context--Escaping , preserve HTML entities like &apos;");
17
+ test("Escaping HTML, preserve HTML entities", function() {
18
+ var input = "<p>HTML!</p><script>alert('hi');<" + "/script> &illegalese; & &amp; Hello, World!";
19
+ var output = SC.RenderContext.escapeHTML(input);
20
+
21
+ equals(output, '&lt;p&gt;HTML!&lt;/p&gt;&lt;script&gt;alert(\'hi\');&lt;/script&gt; &amp;illegalese; &amp; &amp; Hello, World!', "Properly escapes HTML");
22
+ });
23
+
16
24
  test("Tests stolen from Prototype.js", function() {
17
25
  var largeTextEscaped = '&lt;span&gt;test&lt;/span&gt;',
18
26
  largeTextUnescaped = '<span>test</span>';
@@ -285,10 +285,6 @@ SC.View.reopen(
285
285
 
286
286
  // In the case of zero duration, just adjust and call the callback.
287
287
  if (options.duration === 0) {
288
- //@if(debug)
289
- // Provide a little developer support if they are doing something that should be considered wrong.
290
- SC.warn("Developer Warning: SC.View:animate() was called with a duration of 0 seconds. The view will be adjusted and the callback will fire immediately in the next run loop.");
291
- //@endif
292
288
  this.adjust(hash);
293
289
  this.runAnimationCallback(options, null, NO);
294
290
  return this;
@@ -3,17 +3,17 @@
3
3
  // ==========================================================================
4
4
  /*globals SC */
5
5
 
6
- /** @class
6
+ /**
7
7
  This View is used by Greenhouse when application is in design mode
8
8
  Used for displaying page items
9
9
 
10
10
  @extends SC.ListItemVIew
11
11
  @author Mike Ball
12
-
12
+
13
13
  */
14
14
 
15
15
  SC.pageItemView = SC.ListItemView.extend(
16
- /** @scope SC.ListItemView.prototype */ {
16
+ /** @scope SC.ListItemView.prototype */ {
17
17
  isDropTarget: YES,
18
18
 
19
19
  dragEntered: function(drag, evt) {
@@ -22,42 +22,42 @@ SC.pageItemView = SC.ListItemView.extend(
22
22
 
23
23
  dragExited: function(drag, evt) {
24
24
  this.$().removeClass('highlight');
25
-
25
+
26
26
  },
27
27
 
28
28
  dragEnded: function(drag, evt) {
29
29
  this.$().removeClass('highlight');
30
-
30
+
31
31
  },
32
32
 
33
33
  /**
34
34
  Called when the drag needs to determine which drag operations are
35
35
  valid in a given area.
36
36
 
37
- Override this method to return an OR'd mask of the allowed drag
38
- operations. If the user drags over a droppable area within another
39
- droppable area, the drag will latch onto the deepest view that returns one
37
+ Override this method to return an OR'd mask of the allowed drag
38
+ operations. If the user drags over a droppable area within another
39
+ droppable area, the drag will latch onto the deepest view that returns one
40
40
  or more available operations.
41
41
 
42
42
  The default implementation returns `SC.DRAG_NONE`
43
43
 
44
44
  @param {SC.Drag} drag The current drag object
45
- @param {SC.Event} evt The most recent mouse move event. Use to get
46
- location
47
- @returns {DragOps} A mask of all the drag operations allowed or
45
+ @param {SC.Event} evt The most recent mouse move event. Use to get
46
+ location
47
+ @returns {DragOps} A mask of all the drag operations allowed or
48
48
  SC.DRAG_NONE
49
49
  */
50
- computeDragOperations: function(drag, evt) {
50
+ computeDragOperations: function(drag, evt) {
51
51
  if(drag.hasDataType('SC.Binding')){
52
52
  return SC.DRAG_LINK;
53
53
  }
54
- return SC.DRAG_NONE;
54
+ return SC.DRAG_NONE;
55
55
  },
56
56
 
57
57
  /**
58
58
  Called when the user releases the mouse.
59
59
 
60
- This method gives your drop target one last opportunity to choose to
60
+ This method gives your drop target one last opportunity to choose to
61
61
  accept the proposed drop operation. You might use this method to
62
62
  perform fine-grained checks on the drop location, for example.
63
63
  Return true to accept the drop operation.
@@ -68,7 +68,7 @@ SC.pageItemView = SC.ListItemView.extend(
68
68
  @param {DragOp} op The proposed drag operation. A drag constant
69
69
 
70
70
  @return {Boolean} YES if operation is OK, NO to cancel.
71
- */
71
+ */
72
72
  acceptDragOperation: function(drag, op) { return YES; },
73
73
 
74
74
  /**
@@ -87,11 +87,11 @@ SC.pageItemView = SC.ListItemView.extend(
87
87
 
88
88
  @return {DragOp} Drag Operation actually performed
89
89
  */
90
- performDragOperation: function(drag, op) {
90
+ performDragOperation: function(drag, op) {
91
91
  var data = drag.dataForType('SC.Binding'), that = this;
92
92
  if(data && SC._Greenhouse){
93
93
  var actionObj = SC.Object.create({
94
- type: 'Binding',
94
+ type: 'Binding',
95
95
  source: data,
96
96
  target: that.get('content'),
97
97
  addItem: function(from, to, designAttrs){
@@ -99,7 +99,7 @@ SC.pageItemView = SC.ListItemView.extend(
99
99
  var value = that._propertyPathForProp(this.getPath('target.view.page'),this.getPath('target.view'));
100
100
  view[from+"Binding"] = designAttrs[from+"Binding"] = value+"."+to;
101
101
  view.propertyDidChange(from+"Binding");
102
-
102
+
103
103
  var designer = view.get('designer');
104
104
  if(designer){
105
105
  designer.designProperties.pushObject(from+"Binding");
@@ -114,10 +114,10 @@ SC.pageItemView = SC.ListItemView.extend(
114
114
  return SC.DRAG_LINK;
115
115
  }
116
116
  else{
117
- return SC.DRAG_NONE;
117
+ return SC.DRAG_NONE;
118
118
  }
119
119
  },
120
-
120
+
121
121
  _propertyPathForProp: function(page, prop){
122
122
  for(var key in page){
123
123
  if(page.hasOwnProperty(key)){
@@ -125,6 +125,6 @@ SC.pageItemView = SC.ListItemView.extend(
125
125
  }
126
126
  }
127
127
  }
128
-
128
+
129
129
  });
130
130
 
@@ -39,7 +39,8 @@ SC.BaseTheme.radioRenderDelegate = SC.RenderDelegate.create({
39
39
  context.setClass({
40
40
  active: dataSource.get('isActive'),
41
41
  mixed: dataSource.get('isMixed'),
42
- sel: dataSource.get('isSelected')
42
+ sel: dataSource.get('isSelected'),
43
+ disabled: !dataSource.get('isEnabled')
43
44
  });
44
45
 
45
46
  //accessing accessibility
@@ -69,7 +70,8 @@ SC.BaseTheme.radioRenderDelegate = SC.RenderDelegate.create({
69
70
  jquery.setClass({
70
71
  active: dataSource.get('isActive'),
71
72
  mixed: dataSource.get('isMixed'),
72
- sel: dataSource.get('isSelected')
73
+ sel: dataSource.get('isSelected'),
74
+ disabled: !dataSource.get('isEnabled')
73
75
  });
74
76
 
75
77
  jquery.attr('aria-disabled', dataSource.get('isEnabled') ? 'false' : 'true');
@@ -385,7 +385,7 @@ var pane;
385
385
  var overflowEl = segments[segments.length - 1];
386
386
  ok($(overflowEl).hasClass('sc-overflow-segment'), 'overflow segment should have .sc-overflow-segment class');
387
387
  var overflowLabelEl = $(overflowEl).find('label')[0];
388
- equals(overflowLabelEl.innerText, "&raquo;", 'there should be "&raquo;" text in the overflow segment');
388
+ equals(overflowLabelEl.innerHTML, "»", 'there should be "»" text in the overflow segment');
389
389
  };
390
390
 
391
391
  var lastIsSegment = function (sv, text) {
@@ -393,7 +393,7 @@ var pane;
393
393
  var lastEl = segments[segments.length - 2];
394
394
  ok(!$(lastEl).hasClass('sc-overflow-segment'), 'last segment should not have .sc-overflow-segment class');
395
395
  var lastLabelEl = $(lastEl).find('label')[0];
396
- equals(lastLabelEl.innerText, text, 'there should be "' + text + '" text in the last segment');
396
+ equals(lastLabelEl.innerHTML, text, 'there should be "' + text + '" text in the last segment');
397
397
  };
398
398
 
399
399
  // the last item should be an overflow segment (ie. has .sc-overflow-segment class and text "&raquo")
@@ -22,6 +22,7 @@ function waitFor(testFx, onReady, timeOutMillis) {
22
22
 
23
23
  var env = require('system').env;
24
24
  var args = require('system').args;
25
+ var fs = require('fs');
25
26
 
26
27
  var travis=env['TRAVIS_JOB_ID']?env['TRAVIS_JOB_ID']:false,
27
28
  verbose=env['VERBOSE']?env['VERBOSE']:false,
@@ -29,16 +30,6 @@ var travis=env['TRAVIS_JOB_ID']?env['TRAVIS_JOB_ID']:false,
29
30
  host=env['IP']?env['IP']:"127.0.0.1",
30
31
  filter=(args.length === 2 ? new RegExp(args[1]) : false);
31
32
 
32
- if(!travis && verbose) {
33
- page.onError = function(err, stack) {
34
- console.log("CONSOLE ERROR: "+err);
35
- };
36
-
37
- page.onConsoleMessage = function(msg, lineNum, sourceId) {
38
- console.log('CONSOLE: ' + msg);
39
- };
40
- }
41
-
42
33
  var urls=[
43
34
  {url:'sproutcore/core_foundation/en/current/tests/views/pane/layout.html'},
44
35
  {url:'sproutcore/core_foundation/en/current/tests/views/pane/sendEvent.html'},
@@ -512,6 +503,19 @@ var outcome=0;
512
503
  var failed=0;
513
504
  var webpage = require('webpage');
514
505
 
506
+ function configure(page) {
507
+ if(!travis && verbose) {
508
+ page.onError = function(err, stack) {
509
+ console.log("CONSOLE ERROR: "+err);
510
+ };
511
+
512
+ page.onConsoleMessage = function(msg, lineNum, sourceId) {
513
+ console.log('CONSOLE: ' + msg);
514
+ };
515
+ }
516
+ return page;
517
+ }
518
+
515
519
  function logResult(r,i) {
516
520
  // output coloring
517
521
  var red, blue, reset;
@@ -533,7 +537,7 @@ function runTest(idx, cb) {
533
537
  if (!filter || url.match(filter)) {
534
538
  run++;
535
539
  var page = webpage.create();
536
- page.viewportSize = { width: 1024, height: 768 };
540
+ configure(page).viewportSize = { width: 1024, height: 768 };
537
541
  // Chrome/Linux
538
542
  //page.settings.userAgent = "Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.71 Safari/537.36";
539
543
  page.open('http://'+host+':'+port+'/'+url, function (status) {
@@ -572,8 +576,10 @@ function runTest(idx, cb) {
572
576
  urls[idx].resultText=resultText;
573
577
  if(resultText.indexOf("failed")!=-1) {
574
578
  urls[idx].status=TEST_FAILED; outcome=1; failed++;
579
+ fs.write((idx+1)+'.html', page.content, 'w');
575
580
  } else if(resultText.indexOf("error")!=-1) {
576
581
  urls[idx].status=TEST_ERROR; outcome=1; failed++;
582
+ fs.write((idx+1)+'.html', page.content, 'w');
577
583
  } else {
578
584
  urls[idx].status=TEST_PASSED;
579
585
  }
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sproutcore
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.10.0.rc.1
4
+ version: 1.10.0.rc.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Strobe, Inc., Apple Inc. and contributors
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-09-01 00:00:00.000000000 Z
11
+ date: 2013-09-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rack