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

Sign up to get free protection for your applications and to get access to all the features.
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