angular-on-rails 1.0.5 → 1.1.3u
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/angularjs/version.rb +1 -1
- data/vendor/assets/javascripts/angular-bootstrap-prettify.js +1 -1
- data/vendor/assets/javascripts/angular-bootstrap.js +1 -1
- data/vendor/assets/javascripts/angular-cookies.js +1 -1
- data/vendor/assets/javascripts/angular-loader.js +1 -1
- data/vendor/assets/javascripts/angular-mocks.js +68 -37
- data/vendor/assets/javascripts/angular-resource.js +99 -37
- data/vendor/assets/javascripts/angular-sanitize.js +25 -4
- data/vendor/assets/javascripts/angular-scenario.js +4204 -3710
- data/vendor/assets/javascripts/angular.js +603 -172
- data/vendor/assets/javascripts/i18n/angular-locale_am-et.js +4 -0
- data/vendor/assets/javascripts/i18n/angular-locale_am.js +4 -0
- data/vendor/assets/javascripts/i18n/angular-locale_ar-eg.js +4 -0
- data/vendor/assets/javascripts/i18n/angular-locale_ar.js +4 -0
- data/vendor/assets/javascripts/i18n/angular-locale_bg-bg.js +4 -0
- data/vendor/assets/javascripts/i18n/angular-locale_bg.js +4 -0
- data/vendor/assets/javascripts/i18n/angular-locale_bn-bd.js +4 -0
- data/vendor/assets/javascripts/i18n/angular-locale_bn.js +4 -0
- data/vendor/assets/javascripts/i18n/angular-locale_ca-es.js +4 -0
- data/vendor/assets/javascripts/i18n/angular-locale_ca.js +4 -0
- data/vendor/assets/javascripts/i18n/angular-locale_cs-cz.js +4 -0
- data/vendor/assets/javascripts/i18n/angular-locale_cs.js +4 -0
- data/vendor/assets/javascripts/i18n/angular-locale_da-dk.js +4 -0
- data/vendor/assets/javascripts/i18n/angular-locale_da.js +4 -0
- data/vendor/assets/javascripts/i18n/angular-locale_de-at.js +4 -0
- data/vendor/assets/javascripts/i18n/angular-locale_de-be.js +4 -0
- data/vendor/assets/javascripts/i18n/angular-locale_de-ch.js +4 -0
- data/vendor/assets/javascripts/i18n/angular-locale_de-de.js +4 -0
- data/vendor/assets/javascripts/i18n/angular-locale_de-lu.js +4 -0
- data/vendor/assets/javascripts/i18n/angular-locale_de.js +4 -0
- data/vendor/assets/javascripts/i18n/angular-locale_el-gr.js +4 -0
- data/vendor/assets/javascripts/i18n/angular-locale_el-polyton.js +4 -0
- data/vendor/assets/javascripts/i18n/angular-locale_el.js +4 -0
- data/vendor/assets/javascripts/i18n/angular-locale_en-as.js +4 -0
- data/vendor/assets/javascripts/i18n/angular-locale_en-au.js +4 -0
- data/vendor/assets/javascripts/i18n/angular-locale_en-dsrt-us.js +4 -0
- data/vendor/assets/javascripts/i18n/angular-locale_en-dsrt.js +4 -0
- data/vendor/assets/javascripts/i18n/angular-locale_en-gb.js +4 -0
- data/vendor/assets/javascripts/i18n/angular-locale_en-gu.js +4 -0
- data/vendor/assets/javascripts/i18n/angular-locale_en-ie.js +4 -0
- data/vendor/assets/javascripts/i18n/angular-locale_en-in.js +4 -0
- data/vendor/assets/javascripts/i18n/angular-locale_en-iso.js +4 -0
- data/vendor/assets/javascripts/i18n/angular-locale_en-mh.js +4 -0
- data/vendor/assets/javascripts/i18n/angular-locale_en-mp.js +4 -0
- data/vendor/assets/javascripts/i18n/angular-locale_en-sg.js +4 -0
- data/vendor/assets/javascripts/i18n/angular-locale_en-um.js +4 -0
- data/vendor/assets/javascripts/i18n/angular-locale_en-us.js +4 -0
- data/vendor/assets/javascripts/i18n/angular-locale_en-vi.js +4 -0
- data/vendor/assets/javascripts/i18n/angular-locale_en-za.js +4 -0
- data/vendor/assets/javascripts/i18n/angular-locale_en-zz.js +4 -0
- data/vendor/assets/javascripts/i18n/angular-locale_en.js +4 -0
- data/vendor/assets/javascripts/i18n/angular-locale_es-es.js +4 -0
- data/vendor/assets/javascripts/i18n/angular-locale_es.js +4 -0
- data/vendor/assets/javascripts/i18n/angular-locale_et-ee.js +4 -0
- data/vendor/assets/javascripts/i18n/angular-locale_et.js +4 -0
- data/vendor/assets/javascripts/i18n/angular-locale_eu-es.js +4 -0
- data/vendor/assets/javascripts/i18n/angular-locale_eu.js +4 -0
- data/vendor/assets/javascripts/i18n/angular-locale_fa-ir.js +4 -0
- data/vendor/assets/javascripts/i18n/angular-locale_fa.js +4 -0
- data/vendor/assets/javascripts/i18n/angular-locale_fi-fi.js +4 -0
- data/vendor/assets/javascripts/i18n/angular-locale_fi.js +4 -0
- data/vendor/assets/javascripts/i18n/angular-locale_fil-ph.js +4 -0
- data/vendor/assets/javascripts/i18n/angular-locale_fil.js +4 -0
- data/vendor/assets/javascripts/i18n/angular-locale_fr-bl.js +4 -0
- data/vendor/assets/javascripts/i18n/angular-locale_fr-ca.js +4 -0
- data/vendor/assets/javascripts/i18n/angular-locale_fr-fr.js +4 -0
- data/vendor/assets/javascripts/i18n/angular-locale_fr-gp.js +4 -0
- data/vendor/assets/javascripts/i18n/angular-locale_fr-mc.js +4 -0
- data/vendor/assets/javascripts/i18n/angular-locale_fr-mf.js +4 -0
- data/vendor/assets/javascripts/i18n/angular-locale_fr-mq.js +4 -0
- data/vendor/assets/javascripts/i18n/angular-locale_fr-re.js +4 -0
- data/vendor/assets/javascripts/i18n/angular-locale_fr.js +4 -0
- data/vendor/assets/javascripts/i18n/angular-locale_gl-es.js +4 -0
- data/vendor/assets/javascripts/i18n/angular-locale_gl.js +4 -0
- data/vendor/assets/javascripts/i18n/angular-locale_gsw-ch.js +4 -0
- data/vendor/assets/javascripts/i18n/angular-locale_gsw.js +4 -0
- data/vendor/assets/javascripts/i18n/angular-locale_gu-in.js +4 -0
- data/vendor/assets/javascripts/i18n/angular-locale_gu.js +4 -0
- data/vendor/assets/javascripts/i18n/angular-locale_he-il.js +4 -0
- data/vendor/assets/javascripts/i18n/angular-locale_he.js +4 -0
- data/vendor/assets/javascripts/i18n/angular-locale_hi-in.js +4 -0
- data/vendor/assets/javascripts/i18n/angular-locale_hi.js +4 -0
- data/vendor/assets/javascripts/i18n/angular-locale_hr-hr.js +4 -0
- data/vendor/assets/javascripts/i18n/angular-locale_hr.js +4 -0
- data/vendor/assets/javascripts/i18n/angular-locale_hu-hu.js +4 -0
- data/vendor/assets/javascripts/i18n/angular-locale_hu.js +4 -0
- data/vendor/assets/javascripts/i18n/angular-locale_id-id.js +4 -0
- data/vendor/assets/javascripts/i18n/angular-locale_id.js +4 -0
- data/vendor/assets/javascripts/i18n/angular-locale_in.js +4 -0
- data/vendor/assets/javascripts/i18n/angular-locale_is-is.js +4 -0
- data/vendor/assets/javascripts/i18n/angular-locale_is.js +4 -0
- data/vendor/assets/javascripts/i18n/angular-locale_it-it.js +4 -0
- data/vendor/assets/javascripts/i18n/angular-locale_it.js +4 -0
- data/vendor/assets/javascripts/i18n/angular-locale_iw.js +4 -0
- data/vendor/assets/javascripts/i18n/angular-locale_ja-jp.js +4 -0
- data/vendor/assets/javascripts/i18n/angular-locale_ja.js +4 -0
- data/vendor/assets/javascripts/i18n/angular-locale_kn-in.js +4 -0
- data/vendor/assets/javascripts/i18n/angular-locale_kn.js +4 -0
- data/vendor/assets/javascripts/i18n/angular-locale_ko-kr.js +4 -0
- data/vendor/assets/javascripts/i18n/angular-locale_ko.js +4 -0
- data/vendor/assets/javascripts/i18n/angular-locale_ln-cd.js +4 -0
- data/vendor/assets/javascripts/i18n/angular-locale_ln.js +4 -0
- data/vendor/assets/javascripts/i18n/angular-locale_lt-lt.js +4 -0
- data/vendor/assets/javascripts/i18n/angular-locale_lt.js +4 -0
- data/vendor/assets/javascripts/i18n/angular-locale_lv-lv.js +4 -0
- data/vendor/assets/javascripts/i18n/angular-locale_lv.js +4 -0
- data/vendor/assets/javascripts/i18n/angular-locale_ml-in.js +4 -0
- data/vendor/assets/javascripts/i18n/angular-locale_ml.js +4 -0
- data/vendor/assets/javascripts/i18n/angular-locale_mo.js +4 -0
- data/vendor/assets/javascripts/i18n/angular-locale_mr-in.js +4 -0
- data/vendor/assets/javascripts/i18n/angular-locale_mr.js +4 -0
- data/vendor/assets/javascripts/i18n/angular-locale_ms-my.js +4 -0
- data/vendor/assets/javascripts/i18n/angular-locale_ms.js +4 -0
- data/vendor/assets/javascripts/i18n/angular-locale_mt-mt.js +4 -0
- data/vendor/assets/javascripts/i18n/angular-locale_mt.js +4 -0
- data/vendor/assets/javascripts/i18n/angular-locale_nl-nl.js +4 -0
- data/vendor/assets/javascripts/i18n/angular-locale_nl.js +4 -0
- data/vendor/assets/javascripts/i18n/angular-locale_no.js +4 -0
- data/vendor/assets/javascripts/i18n/angular-locale_or-in.js +4 -0
- data/vendor/assets/javascripts/i18n/angular-locale_or.js +4 -0
- data/vendor/assets/javascripts/i18n/angular-locale_pl-pl.js +4 -0
- data/vendor/assets/javascripts/i18n/angular-locale_pl.js +4 -0
- data/vendor/assets/javascripts/i18n/angular-locale_pt-br.js +4 -0
- data/vendor/assets/javascripts/i18n/angular-locale_pt-pt.js +4 -0
- data/vendor/assets/javascripts/i18n/angular-locale_pt.js +4 -0
- data/vendor/assets/javascripts/i18n/angular-locale_ro-ro.js +4 -0
- data/vendor/assets/javascripts/i18n/angular-locale_ro.js +4 -0
- data/vendor/assets/javascripts/i18n/angular-locale_ru-ru.js +4 -0
- data/vendor/assets/javascripts/i18n/angular-locale_ru.js +4 -0
- data/vendor/assets/javascripts/i18n/angular-locale_sk-sk.js +4 -0
- data/vendor/assets/javascripts/i18n/angular-locale_sk.js +4 -0
- data/vendor/assets/javascripts/i18n/angular-locale_sl-si.js +4 -0
- data/vendor/assets/javascripts/i18n/angular-locale_sl.js +4 -0
- data/vendor/assets/javascripts/i18n/angular-locale_sq-al.js +4 -0
- data/vendor/assets/javascripts/i18n/angular-locale_sq.js +4 -0
- data/vendor/assets/javascripts/i18n/angular-locale_sr-cyrl-rs.js +4 -0
- data/vendor/assets/javascripts/i18n/angular-locale_sr-latn-rs.js +4 -0
- data/vendor/assets/javascripts/i18n/angular-locale_sr-rs.js +4 -0
- data/vendor/assets/javascripts/i18n/angular-locale_sr.js +4 -0
- data/vendor/assets/javascripts/i18n/angular-locale_sv-se.js +4 -0
- data/vendor/assets/javascripts/i18n/angular-locale_sv.js +4 -0
- data/vendor/assets/javascripts/i18n/angular-locale_sw-tz.js +4 -0
- data/vendor/assets/javascripts/i18n/angular-locale_sw.js +4 -0
- data/vendor/assets/javascripts/i18n/angular-locale_ta-in.js +4 -0
- data/vendor/assets/javascripts/i18n/angular-locale_ta.js +4 -0
- data/vendor/assets/javascripts/i18n/angular-locale_te-in.js +4 -0
- data/vendor/assets/javascripts/i18n/angular-locale_te.js +4 -0
- data/vendor/assets/javascripts/i18n/angular-locale_th-th.js +4 -0
- data/vendor/assets/javascripts/i18n/angular-locale_th.js +4 -0
- data/vendor/assets/javascripts/i18n/angular-locale_tl-ph.js +4 -0
- data/vendor/assets/javascripts/i18n/angular-locale_tl.js +4 -0
- data/vendor/assets/javascripts/i18n/angular-locale_tr-tr.js +4 -0
- data/vendor/assets/javascripts/i18n/angular-locale_tr.js +4 -0
- data/vendor/assets/javascripts/i18n/angular-locale_uk-ua.js +4 -0
- data/vendor/assets/javascripts/i18n/angular-locale_uk.js +4 -0
- data/vendor/assets/javascripts/i18n/angular-locale_ur-pk.js +4 -0
- data/vendor/assets/javascripts/i18n/angular-locale_ur.js +4 -0
- data/vendor/assets/javascripts/i18n/angular-locale_vi-vn.js +4 -0
- data/vendor/assets/javascripts/i18n/angular-locale_vi.js +4 -0
- data/vendor/assets/javascripts/i18n/angular-locale_zh-cn.js +4 -0
- data/vendor/assets/javascripts/i18n/angular-locale_zh-hans-cn.js +4 -0
- data/vendor/assets/javascripts/i18n/angular-locale_zh-hans.js +4 -0
- data/vendor/assets/javascripts/i18n/angular-locale_zh-hk.js +4 -0
- data/vendor/assets/javascripts/i18n/angular-locale_zh-tw.js +4 -0
- data/vendor/assets/javascripts/i18n/angular-locale_zh.js +4 -0
- metadata +160 -10
- data/vendor/assets/javascripts/jstd-scenario-adapter-config.js +0 -6
- data/vendor/assets/javascripts/jstd-scenario-adapter.js +0 -185
data/lib/angularjs/version.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
/**
|
2
|
-
* @license AngularJS v1.
|
2
|
+
* @license AngularJS v1.1.3
|
3
3
|
* (c) 2010-2012 Google, Inc. http://angularjs.org
|
4
4
|
* License: MIT
|
5
5
|
*
|
@@ -456,6 +456,7 @@ angular.mock.$LogProvider = function() {
|
|
456
456
|
* newYearInBratislava.getDate() => 1;
|
457
457
|
* newYearInBratislava.getHours() => 0;
|
458
458
|
* newYearInBratislava.getMinutes() => 0;
|
459
|
+
* newYearInBratislava.getSeconds() => 0;
|
459
460
|
* </pre>
|
460
461
|
*
|
461
462
|
*/
|
@@ -512,6 +513,10 @@ angular.mock.$LogProvider = function() {
|
|
512
513
|
return self.date.getSeconds();
|
513
514
|
};
|
514
515
|
|
516
|
+
self.getMilliseconds = function() {
|
517
|
+
return self.date.getMilliseconds();
|
518
|
+
};
|
519
|
+
|
515
520
|
self.getTimezoneOffset = function() {
|
516
521
|
return offset * 60;
|
517
522
|
};
|
@@ -562,7 +567,7 @@ angular.mock.$LogProvider = function() {
|
|
562
567
|
}
|
563
568
|
|
564
569
|
//hide all methods not implemented in this mock that the Date prototype exposes
|
565
|
-
var unimplementedMethods = ['
|
570
|
+
var unimplementedMethods = ['getUTCDay',
|
566
571
|
'getYear', 'setDate', 'setFullYear', 'setHours', 'setMilliseconds',
|
567
572
|
'setMinutes', 'setMonth', 'setSeconds', 'setTime', 'setUTCDate', 'setUTCFullYear',
|
568
573
|
'setUTCHours', 'setUTCMilliseconds', 'setUTCMinutes', 'setUTCMonth', 'setUTCSeconds',
|
@@ -1352,17 +1357,49 @@ function MockXhr() {
|
|
1352
1357
|
* @description
|
1353
1358
|
*
|
1354
1359
|
* This service is just a simple decorator for {@link ng.$timeout $timeout} service
|
1355
|
-
* that adds a "flush"
|
1356
|
-
*/
|
1360
|
+
* that adds a "flush" and "verifyNoPendingTasks" methods.
|
1361
|
+
*/
|
1357
1362
|
|
1358
|
-
|
1359
|
-
|
1360
|
-
|
1361
|
-
|
1362
|
-
|
1363
|
-
|
1364
|
-
|
1365
|
-
|
1363
|
+
angular.mock.$TimeoutDecorator = function($delegate, $browser) {
|
1364
|
+
|
1365
|
+
/**
|
1366
|
+
* @ngdoc method
|
1367
|
+
* @name ngMock.$timeout#flush
|
1368
|
+
* @methodOf ngMock.$timeout
|
1369
|
+
* @description
|
1370
|
+
*
|
1371
|
+
* Flushes the queue of pending tasks.
|
1372
|
+
*/
|
1373
|
+
$delegate.flush = function() {
|
1374
|
+
$browser.defer.flush();
|
1375
|
+
};
|
1376
|
+
|
1377
|
+
/**
|
1378
|
+
* @ngdoc method
|
1379
|
+
* @name ngMock.$timeout#verifyNoPendingTasks
|
1380
|
+
* @methodOf ngMock.$timeout
|
1381
|
+
* @description
|
1382
|
+
*
|
1383
|
+
* Verifies that there are no pending tasks that need to be flushed.
|
1384
|
+
*/
|
1385
|
+
$delegate.verifyNoPendingTasks = function() {
|
1386
|
+
if ($browser.deferredFns.length) {
|
1387
|
+
throw Error('Deferred tasks to flush (' + $browser.deferredFns.length + '): ' +
|
1388
|
+
formatPendingTasksAsString($browser.deferredFns));
|
1389
|
+
}
|
1390
|
+
};
|
1391
|
+
|
1392
|
+
function formatPendingTasksAsString(tasks) {
|
1393
|
+
var result = [];
|
1394
|
+
angular.forEach(tasks, function(task) {
|
1395
|
+
result.push('{id: ' + task.id + ', ' + 'time: ' + task.time + '}');
|
1396
|
+
});
|
1397
|
+
|
1398
|
+
return result.join(', ');
|
1399
|
+
}
|
1400
|
+
|
1401
|
+
return $delegate;
|
1402
|
+
};
|
1366
1403
|
|
1367
1404
|
/**
|
1368
1405
|
*
|
@@ -1388,15 +1425,9 @@ angular.module('ngMock', ['ng']).provider({
|
|
1388
1425
|
$httpBackend: angular.mock.$HttpBackendProvider,
|
1389
1426
|
$rootElement: angular.mock.$RootElementProvider
|
1390
1427
|
}).config(function($provide) {
|
1391
|
-
$provide.decorator('$timeout',
|
1392
|
-
$delegate.flush = function() {
|
1393
|
-
$browser.defer.flush();
|
1394
|
-
};
|
1395
|
-
return $delegate;
|
1396
|
-
});
|
1428
|
+
$provide.decorator('$timeout', angular.mock.$TimeoutDecorator);
|
1397
1429
|
});
|
1398
1430
|
|
1399
|
-
|
1400
1431
|
/**
|
1401
1432
|
* @ngdoc overview
|
1402
1433
|
* @name ngMockE2E
|
@@ -1610,14 +1641,20 @@ window.jstestdriver && (function(window) {
|
|
1610
1641
|
})(window);
|
1611
1642
|
|
1612
1643
|
|
1613
|
-
window.jasmine && (function(window) {
|
1644
|
+
(window.jasmine || window.mocha) && (function(window) {
|
1645
|
+
|
1646
|
+
var currentSpec = null;
|
1647
|
+
|
1648
|
+
beforeEach(function() {
|
1649
|
+
currentSpec = this;
|
1650
|
+
});
|
1614
1651
|
|
1615
1652
|
afterEach(function() {
|
1616
|
-
var
|
1617
|
-
var injector = spec.$injector;
|
1653
|
+
var injector = currentSpec.$injector;
|
1618
1654
|
|
1619
|
-
|
1620
|
-
|
1655
|
+
currentSpec.$injector = null;
|
1656
|
+
currentSpec.$modules = null;
|
1657
|
+
currentSpec = null;
|
1621
1658
|
|
1622
1659
|
if (injector) {
|
1623
1660
|
injector.get('$rootElement').unbind();
|
@@ -1639,13 +1676,8 @@ window.jasmine && (function(window) {
|
|
1639
1676
|
angular.callbacks.counter = 0;
|
1640
1677
|
});
|
1641
1678
|
|
1642
|
-
function getCurrentSpec() {
|
1643
|
-
return jasmine.getEnv().currentSpec;
|
1644
|
-
}
|
1645
|
-
|
1646
1679
|
function isSpecRunning() {
|
1647
|
-
|
1648
|
-
return spec && spec.queue.running;
|
1680
|
+
return currentSpec && currentSpec.queue.running;
|
1649
1681
|
}
|
1650
1682
|
|
1651
1683
|
/**
|
@@ -1670,11 +1702,10 @@ window.jasmine && (function(window) {
|
|
1670
1702
|
return isSpecRunning() ? workFn() : workFn;
|
1671
1703
|
/////////////////////
|
1672
1704
|
function workFn() {
|
1673
|
-
|
1674
|
-
if (spec.$injector) {
|
1705
|
+
if (currentSpec.$injector) {
|
1675
1706
|
throw Error('Injector already created, can not register a module!');
|
1676
1707
|
} else {
|
1677
|
-
var modules =
|
1708
|
+
var modules = currentSpec.$modules || (currentSpec.$modules = []);
|
1678
1709
|
angular.forEach(moduleFns, function(module) {
|
1679
1710
|
modules.push(module);
|
1680
1711
|
});
|
@@ -1741,13 +1772,13 @@ window.jasmine && (function(window) {
|
|
1741
1772
|
return isSpecRunning() ? workFn() : workFn;
|
1742
1773
|
/////////////////////
|
1743
1774
|
function workFn() {
|
1744
|
-
var
|
1745
|
-
|
1775
|
+
var modules = currentSpec.$modules || [];
|
1776
|
+
|
1746
1777
|
modules.unshift('ngMock');
|
1747
1778
|
modules.unshift('ng');
|
1748
|
-
var injector =
|
1779
|
+
var injector = currentSpec.$injector;
|
1749
1780
|
if (!injector) {
|
1750
|
-
injector =
|
1781
|
+
injector = currentSpec.$injector = angular.injector(modules);
|
1751
1782
|
}
|
1752
1783
|
for(var i = 0, ii = blockFns.length; i < ii; i++) {
|
1753
1784
|
try {
|
@@ -1,5 +1,5 @@
|
|
1
1
|
/**
|
2
|
-
* @license AngularJS v1.
|
2
|
+
* @license AngularJS v1.1.3
|
3
3
|
* (c) 2010-2012 Google, Inc. http://angularjs.org
|
4
4
|
* License: MIT
|
5
5
|
*/
|
@@ -25,12 +25,13 @@
|
|
25
25
|
* the need to interact with the low level {@link ng.$http $http} service.
|
26
26
|
*
|
27
27
|
* @param {string} url A parameterized URL template with parameters prefixed by `:` as in
|
28
|
-
* `/user/:username`. If you are using a URL with a port number (e.g.
|
28
|
+
* `/user/:username`. If you are using a URL with a port number (e.g.
|
29
29
|
* `http://example.com:8080/api`), you'll need to escape the colon character before the port
|
30
30
|
* number, like this: `$resource('http://example.com\\:8080/api')`.
|
31
31
|
*
|
32
32
|
* @param {Object=} paramDefaults Default values for `url` parameters. These can be overridden in
|
33
|
-
* `actions` methods.
|
33
|
+
* `actions` methods. If any of the parameter value is a function, it will be executed every time
|
34
|
+
* when a param value needs to be obtained for a request (unless the param was overriden).
|
34
35
|
*
|
35
36
|
* Each key value in the parameter object is first bound to url template if present and then any
|
36
37
|
* excess keys are appended to the url search query after the `?`.
|
@@ -42,21 +43,40 @@
|
|
42
43
|
* the data object (useful for non-GET operations).
|
43
44
|
*
|
44
45
|
* @param {Object.<Object>=} actions Hash with declaration of custom action that should extend the
|
45
|
-
* default set of resource actions. The declaration should be created in the
|
46
|
+
* default set of resource actions. The declaration should be created in the format of {@link
|
47
|
+
* ng.$http#Parameters $http.config}:
|
46
48
|
*
|
47
|
-
* {action1: {method:?, params:?, isArray
|
48
|
-
* action2: {method:?, params:?, isArray
|
49
|
+
* {action1: {method:?, params:?, isArray:?, headers:?, ...},
|
50
|
+
* action2: {method:?, params:?, isArray:?, headers:?, ...},
|
49
51
|
* ...}
|
50
52
|
*
|
51
53
|
* Where:
|
52
54
|
*
|
53
|
-
* -
|
55
|
+
* - **`action`** – {string} – The name of action. This name becomes the name of the method on your
|
54
56
|
* resource object.
|
55
|
-
* -
|
56
|
-
* and `JSONP
|
57
|
-
* -
|
58
|
-
*
|
57
|
+
* - **`method`** – {string} – HTTP request method. Valid methods are: `GET`, `POST`, `PUT`, `DELETE`,
|
58
|
+
* and `JSONP`.
|
59
|
+
* - **`params`** – {Object=} – Optional set of pre-bound parameters for this action. If any of the
|
60
|
+
* parameter value is a function, it will be executed every time when a param value needs to be
|
61
|
+
* obtained for a request (unless the param was overriden).
|
62
|
+
* - **`isArray`** – {boolean=} – If true then the returned object for this action is an array, see
|
59
63
|
* `returns` section.
|
64
|
+
* - **`transformRequest`** – `{function(data, headersGetter)|Array.<function(data, headersGetter)>}` –
|
65
|
+
* transform function or an array of such functions. The transform function takes the http
|
66
|
+
* request body and headers and returns its transformed (typically serialized) version.
|
67
|
+
* - **`transformResponse`** – `{function(data, headersGetter)|Array.<function(data, headersGetter)>}` –
|
68
|
+
* transform function or an array of such functions. The transform function takes the http
|
69
|
+
* response body and headers and returns its transformed (typically deserialized) version.
|
70
|
+
* - **`cache`** – `{boolean|Cache}` – If true, a default $http cache will be used to cache the
|
71
|
+
* GET request, otherwise if a cache instance built with
|
72
|
+
* {@link ng.$cacheFactory $cacheFactory}, this cache will be used for
|
73
|
+
* caching.
|
74
|
+
* - **`timeout`** – `{number}` – timeout in milliseconds.
|
75
|
+
* - **`withCredentials`** - `{boolean}` - whether to to set the `withCredentials` flag on the
|
76
|
+
* XHR object. See {@link https://developer.mozilla.org/en/http_access_control#section_5
|
77
|
+
* requests with credentials} for more information.
|
78
|
+
* - **`responseType`** - `{string}` - see {@link
|
79
|
+
* https://developer.mozilla.org/en-US/docs/DOM/XMLHttpRequest#responseType requestType}.
|
60
80
|
*
|
61
81
|
* @returns {Object} A resource "class" object with methods for the default set of resource actions
|
62
82
|
* optionally extended with custom `actions`. The default set contains these actions:
|
@@ -96,6 +116,24 @@
|
|
96
116
|
* - non-GET instance actions: `instance.$action([parameters], [success], [error])`
|
97
117
|
*
|
98
118
|
*
|
119
|
+
* The Resource instances and collection have these additional properties:
|
120
|
+
*
|
121
|
+
* - `$then`: the `then` method of a {@link ng.$q promise} derived from the underlying
|
122
|
+
* {@link ng.$http $http} call.
|
123
|
+
*
|
124
|
+
* The success callback for the `$then` method will be resolved if the underlying `$http` requests
|
125
|
+
* succeeds.
|
126
|
+
*
|
127
|
+
* The success callback is called with a single object which is the {@link ng.$http http response}
|
128
|
+
* object extended with a new property `resource`. This `resource` property is a reference to the
|
129
|
+
* result of the resource action — resource object or array of resources.
|
130
|
+
*
|
131
|
+
* The error callback is called with the {@link ng.$http http response} object when an http
|
132
|
+
* error occurs.
|
133
|
+
*
|
134
|
+
* - `$resolved`: true if the promise has been resolved (either with success or rejection);
|
135
|
+
* Knowing if the Resource has been resolved is useful in data-binding.
|
136
|
+
*
|
99
137
|
* @example
|
100
138
|
*
|
101
139
|
* # Credit card resource
|
@@ -138,7 +176,7 @@
|
|
138
176
|
* The object returned from this function execution is a resource "class" which has "static" method
|
139
177
|
* for each action in the definition.
|
140
178
|
*
|
141
|
-
* Calling these methods invoke `$http` on the `url` template with the given `method` and `
|
179
|
+
* Calling these methods invoke `$http` on the `url` template with the given `method`, `params` and `headers`.
|
142
180
|
* When the data is returned from the server then the object is an instance of the resource type and
|
143
181
|
* all of the non-GET methods are available with `$` prefix. This allows you to easily support CRUD
|
144
182
|
* operations (create, read, update, delete) on server-side data.
|
@@ -284,7 +322,7 @@ angular.module('ngResource', ['ng']).
|
|
284
322
|
}
|
285
323
|
|
286
324
|
Route.prototype = {
|
287
|
-
|
325
|
+
setUrlParams: function(config, params) {
|
288
326
|
var self = this,
|
289
327
|
url = this.template,
|
290
328
|
val,
|
@@ -307,16 +345,17 @@ angular.module('ngResource', ['ng']).
|
|
307
345
|
});
|
308
346
|
}
|
309
347
|
});
|
310
|
-
|
311
|
-
|
348
|
+
|
349
|
+
// set the url
|
350
|
+
config.url = url.replace(/\/?#$/, '').replace(/\/*$/, '');
|
351
|
+
|
352
|
+
// set params - delegate param encoding to $http
|
312
353
|
forEach(params, function(value, key){
|
313
354
|
if (!self.urlParams[key]) {
|
314
|
-
|
355
|
+
config.params = config.params || {};
|
356
|
+
config.params[key] = value;
|
315
357
|
}
|
316
358
|
});
|
317
|
-
query.sort();
|
318
|
-
url = url.replace(/\/*$/, '');
|
319
|
-
return url + (query.length ? '?' + query.join('&') : '');
|
320
359
|
}
|
321
360
|
};
|
322
361
|
|
@@ -330,6 +369,7 @@ angular.module('ngResource', ['ng']).
|
|
330
369
|
var ids = {};
|
331
370
|
actionParams = extend({}, paramDefaults, actionParams);
|
332
371
|
forEach(actionParams, function(value, key){
|
372
|
+
if (isFunction(value)) { value = value(); }
|
333
373
|
ids[key] = value.charAt && value.charAt(0) == '@' ? getter(data, value.substr(1)) : value;
|
334
374
|
});
|
335
375
|
return ids;
|
@@ -347,6 +387,8 @@ angular.module('ngResource', ['ng']).
|
|
347
387
|
var data;
|
348
388
|
var success = noop;
|
349
389
|
var error = null;
|
390
|
+
var promise;
|
391
|
+
|
350
392
|
switch(arguments.length) {
|
351
393
|
case 4:
|
352
394
|
error = a4;
|
@@ -382,25 +424,45 @@ angular.module('ngResource', ['ng']).
|
|
382
424
|
}
|
383
425
|
|
384
426
|
var value = this instanceof Resource ? this : (action.isArray ? [] : new Resource(data));
|
385
|
-
|
386
|
-
|
387
|
-
|
388
|
-
|
389
|
-
|
390
|
-
|
391
|
-
|
392
|
-
|
393
|
-
|
394
|
-
|
395
|
-
|
396
|
-
|
397
|
-
|
398
|
-
|
399
|
-
|
400
|
-
|
427
|
+
var httpConfig = {},
|
428
|
+
promise;
|
429
|
+
|
430
|
+
forEach(action, function(value, key) {
|
431
|
+
if (key != 'params' && key != 'isArray' ) {
|
432
|
+
httpConfig[key] = copy(value);
|
433
|
+
}
|
434
|
+
});
|
435
|
+
httpConfig.data = data;
|
436
|
+
route.setUrlParams(httpConfig, extend({}, extractParams(data, action.params || {}), params));
|
437
|
+
|
438
|
+
function markResolved() { value.$resolved = true; }
|
439
|
+
|
440
|
+
promise = $http(httpConfig);
|
441
|
+
value.$resolved = false;
|
442
|
+
|
443
|
+
promise.then(markResolved, markResolved);
|
444
|
+
value.$then = promise.then(function(response) {
|
445
|
+
var data = response.data;
|
446
|
+
var then = value.$then, resolved = value.$resolved;
|
447
|
+
|
448
|
+
if (data) {
|
449
|
+
if (action.isArray) {
|
450
|
+
value.length = 0;
|
451
|
+
forEach(data, function(item) {
|
452
|
+
value.push(new Resource(item));
|
453
|
+
});
|
454
|
+
} else {
|
455
|
+
copy(data, value);
|
456
|
+
value.$then = then;
|
457
|
+
value.$resolved = resolved;
|
401
458
|
}
|
402
|
-
|
403
|
-
|
459
|
+
}
|
460
|
+
|
461
|
+
(success||noop)(value, response.headers);
|
462
|
+
|
463
|
+
response.resource = value;
|
464
|
+
return response;
|
465
|
+
}, error).then;
|
404
466
|
|
405
467
|
return value;
|
406
468
|
};
|
@@ -1,5 +1,5 @@
|
|
1
1
|
/**
|
2
|
-
* @license AngularJS v1.
|
2
|
+
* @license AngularJS v1.1.3
|
3
3
|
* (c) 2010-2012 Google, Inc. http://angularjs.org
|
4
4
|
* License: MIT
|
5
5
|
*/
|
@@ -129,7 +129,7 @@ var START_TAG_REGEXP = /^<\s*([\w:-]+)((?:\s+[\w:-]+(?:\s*=\s*(?:(?:"[^"]*")|(?:
|
|
129
129
|
BEGING_END_TAGE_REGEXP = /^<\s*\//,
|
130
130
|
COMMENT_REGEXP = /<!--(.*?)-->/g,
|
131
131
|
CDATA_REGEXP = /<!\[CDATA\[(.*?)]]>/g,
|
132
|
-
URI_REGEXP = /^((ftp|https?):\/\/|mailto:|#)/,
|
132
|
+
URI_REGEXP = /^((ftp|https?):\/\/|mailto:|tel:|#)/,
|
133
133
|
NON_ALPHANUMERIC_REGEXP = /([^\#-~| |!])/g; // Match everything outside of normal chars and " (quote character)
|
134
134
|
|
135
135
|
|
@@ -432,6 +432,7 @@ angular.module('ngSanitize').directive('ngBindHtml', ['$sanitize', function($san
|
|
432
432
|
* plain email address links.
|
433
433
|
*
|
434
434
|
* @param {string} text Input text.
|
435
|
+
* @param {string} target Window (_blank|_self|_parent|_top) or named frame to open links in.
|
435
436
|
* @returns {string} Html-linkified text.
|
436
437
|
*
|
437
438
|
* @usage
|
@@ -448,6 +449,7 @@ angular.module('ngSanitize').directive('ngBindHtml', ['$sanitize', function($san
|
|
448
449
|
'mailto:us@somewhere.org,\n'+
|
449
450
|
'another@somewhere.org,\n'+
|
450
451
|
'and one more: ftp://127.0.0.1/.';
|
452
|
+
$scope.snippetWithTarget = 'http://angularjs.org/';
|
451
453
|
}
|
452
454
|
</script>
|
453
455
|
<div ng-controller="Ctrl">
|
@@ -467,6 +469,15 @@ angular.module('ngSanitize').directive('ngBindHtml', ['$sanitize', function($san
|
|
467
469
|
<div ng-bind-html="snippet | linky"></div>
|
468
470
|
</td>
|
469
471
|
</tr>
|
472
|
+
<tr id="linky-target">
|
473
|
+
<td>linky target</td>
|
474
|
+
<td>
|
475
|
+
<pre><div ng-bind-html="snippetWithTarget | linky:'_blank'"><br></div></pre>
|
476
|
+
</td>
|
477
|
+
<td>
|
478
|
+
<div ng-bind-html="snippetWithTarget | linky:'_blank'"></div>
|
479
|
+
</td>
|
480
|
+
</tr>
|
470
481
|
<tr id="escaped-html">
|
471
482
|
<td>no filter</td>
|
472
483
|
<td><pre><div ng-bind="snippet"><br></div></pre></td>
|
@@ -499,6 +510,11 @@ angular.module('ngSanitize').directive('ngBindHtml', ['$sanitize', function($san
|
|
499
510
|
toBe('new <a href="http://link">http://link</a>.');
|
500
511
|
expect(using('#escaped-html').binding('snippet')).toBe('new http://link.');
|
501
512
|
});
|
513
|
+
|
514
|
+
it('should work with the target property', function() {
|
515
|
+
expect(using('#linky-target').binding("snippetWithTarget | linky:'_blank'")).
|
516
|
+
toBe('<a target="_blank" href="http://angularjs.org/">http://angularjs.org/</a>');
|
517
|
+
});
|
502
518
|
</doc:scenario>
|
503
519
|
</doc:example>
|
504
520
|
*/
|
@@ -506,7 +522,7 @@ angular.module('ngSanitize').filter('linky', function() {
|
|
506
522
|
var LINKY_URL_REGEXP = /((ftp|https?):\/\/|(mailto:)?[A-Za-z0-9._%+-]+@)\S*[^\s\.\;\,\(\)\{\}\<\>]/,
|
507
523
|
MAILTO_REGEXP = /^mailto:/;
|
508
524
|
|
509
|
-
return function(text) {
|
525
|
+
return function(text, target) {
|
510
526
|
if (!text) return text;
|
511
527
|
var match;
|
512
528
|
var raw = text;
|
@@ -515,6 +531,10 @@ angular.module('ngSanitize').filter('linky', function() {
|
|
515
531
|
var writer = htmlSanitizeWriter(html);
|
516
532
|
var url;
|
517
533
|
var i;
|
534
|
+
var properties = {};
|
535
|
+
if (angular.isDefined(target)) {
|
536
|
+
properties.target = target;
|
537
|
+
}
|
518
538
|
while ((match = raw.match(LINKY_URL_REGEXP))) {
|
519
539
|
// We can not end in these as they are sometimes found at the end of the sentence
|
520
540
|
url = match[0];
|
@@ -522,7 +542,8 @@ angular.module('ngSanitize').filter('linky', function() {
|
|
522
542
|
if (match[2] == match[3]) url = 'mailto:' + url;
|
523
543
|
i = match.index;
|
524
544
|
writer.chars(raw.substr(0, i));
|
525
|
-
|
545
|
+
properties.href = url;
|
546
|
+
writer.start('a', properties);
|
526
547
|
writer.chars(match[0].replace(MAILTO_REGEXP, ''));
|
527
548
|
writer.end('a');
|
528
549
|
raw = raw.substring(i + match[0].length);
|