fanforce-plugin-factory 2.0.0.rc3 → 2.0.0.rc5
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 +5 -13
- data/.ruby-version +1 -1
- data/Gemfile +2 -0
- data/README.md +1 -1
- data/fanforce-plugin-factory.gemspec +16 -16
- data/lib/fanforce/plugin_factory/Rakefile +2 -0
- data/lib/fanforce/plugin_factory/asset_framework/plugin_factory/_directives.scss +1 -0
- data/lib/fanforce/plugin_factory/asset_framework/plugin_factory/directives/campaign-added/_campaign-added.coffee +21 -0
- data/lib/fanforce/plugin_factory/asset_framework/plugin_factory/directives/campaign-added/_campaign-added.scss +15 -0
- data/lib/fanforce/plugin_factory/asset_framework/plugin_factory/directives/initiative-added/_initiative-added.coffee +1 -1
- data/lib/fanforce/plugin_factory/asset_framework/plugin_factory/directives/page/_page.scss +1 -1
- data/lib/fanforce/plugin_factory/asset_framework/plugin_factory/vendors/cross-dresser.js +698 -0
- data/lib/fanforce/plugin_factory/core_config.rb +31 -14
- data/lib/fanforce/plugin_factory/directive_views/campaign-added.haml +13 -0
- data/lib/fanforce/plugin_factory/directive_views/initiative-added.haml +3 -3
- data/lib/fanforce/plugin_factory/scaffolding/._Gemfile.registry +2 -0
- data/lib/fanforce/plugin_factory/scaffolding/Gemfile +1 -1
- data/lib/fanforce/plugin_factory/scaffolding/assets/css/._fembedded.scss.registry +3 -0
- data/lib/fanforce/plugin_factory/scaffolding/assets/css/._fembedded_native.scss.registry +2 -0
- data/lib/fanforce/plugin_factory/scaffolding/assets/css/fembedded.scss +3 -4
- data/lib/fanforce/plugin_factory/scaffolding/assets/css/fembedded_native.scss +3 -3
- data/lib/fanforce/plugin_factory/scaffolding/assets/js/._app-fembedded.coffee.registry +2 -0
- data/lib/fanforce/plugin_factory/scaffolding/assets/js/._fembedded.js.registry +2 -0
- data/lib/fanforce/plugin_factory/scaffolding/assets/js/app-fembedded.coffee +11 -0
- data/lib/fanforce/plugin_factory/scaffolding/assets/js/lib/._cookie.coffee.registry +1 -0
- data/lib/fanforce/plugin_factory/scaffolding/assets/js/lib/cookie.coffee +1 -1
- data/lib/fanforce/plugin_factory/scaffolding/layouts/._fembedded.haml.registry +7 -0
- data/lib/fanforce/plugin_factory/scaffolding/layouts/._fembedded_native.haml.registry +2 -0
- data/lib/fanforce/plugin_factory/scaffolding/layouts/._promotional.haml.registry +2 -0
- data/lib/fanforce/plugin_factory/scaffolding/layouts/._visitor.haml.registry +1 -0
- data/lib/fanforce/plugin_factory/scaffolding/layouts/fembedded.haml +12 -9
- data/lib/fanforce/plugin_factory/scaffolding/layouts/fembedded_native.haml +3 -1
- data/lib/fanforce/plugin_factory/scaffolding/layouts/promotional.haml +5 -6
- data/lib/fanforce/plugin_factory/scaffolding/layouts/visitor.haml +22 -20
- data/lib/fanforce/plugin_factory/scaffolding/views/._cross-dresser.html.registry +2 -0
- data/lib/fanforce/plugin_factory/scaffolding/views/._index.haml.registry +1 -0
- data/lib/fanforce/plugin_factory/scaffolding/views/cross-dresser.html +26 -0
- data/lib/fanforce/plugin_factory/scaffolding/views/index.haml +3 -2
- data/lib/fanforce/plugin_factory/sinatra/_load.rb +25 -7
- data/lib/fanforce/plugin_factory/sinatra/helpers/fanforce.rb +2 -1
- data/lib/fanforce/plugin_factory/sinatra/route_helpers/base.rb +13 -0
- data/lib/fanforce/plugin_factory/sinatra/route_helpers/com_campaign.rb +7 -0
- data/lib/fanforce/plugin_factory/sinatra/route_helpers/com_database.rb +11 -0
- data/lib/fanforce/plugin_factory/sinatra/{helper_routes → route_helpers}/com_identifier.rb +0 -0
- data/lib/fanforce/plugin_factory/sinatra/{helper_routes → route_helpers}/com_initiative.rb +6 -3
- data/lib/fanforce/plugin_factory/sinatra/{helper_routes → route_helpers}/com_js_widget.rb +0 -0
- data/lib/fanforce/plugin_factory/sinatra/{helper_routes → route_helpers}/plugin.rb +1 -1
- data/lib/fanforce/plugin_factory/version.rb +1 -1
- metadata +131 -110
- data/lib/fanforce/plugin_factory/sinatra/helper_routes/com_campaign.rb +0 -11
- data/lib/fanforce/plugin_factory/sinatra/helper_routes/com_database.rb +0 -11
checksums.yaml
CHANGED
@@ -1,15 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
|
5
|
-
data.tar.gz: !binary |-
|
6
|
-
ZmMwYTI3NTI0NTE1OTk3M2ZjYjM1YzUxNGIzOWRhN2YzYjZlNjY3Mg==
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 15f4a3def684be1f6d5ff4b73e3cdb9b1910b67a
|
4
|
+
data.tar.gz: b046c14c20345ccb61da8988cfc374efb7aba067
|
7
5
|
SHA512:
|
8
|
-
metadata.gz:
|
9
|
-
|
10
|
-
ZTNiNGRmZTExY2RhNDMyNmY5M2U0NzUwMjlmNDAxNDM4NjEzMzU3YTYzNWM1
|
11
|
-
M2Q3ZWMwYzVjYmVmMGZhMTViNjQ1YjZmNjAyN2E3MWI2ZTI2YjM=
|
12
|
-
data.tar.gz: !binary |-
|
13
|
-
M2Y1MDI5MTdlNmZmNGJiOGFkM2U0ZmFiZTEyNmZmZDY0NjYxYjllZTA5YWMx
|
14
|
-
YzBlZDA0ODViNTA4MzA3ZjU2MTM1ZGFkNmQ2MGUyYTk1NDM4ZThkZTQzYTM1
|
15
|
-
ODczOWM0NTQzN2FhYzc2Y2Y1N2ZjNGU4YjA1NmZkMWJkNTEwM2E=
|
6
|
+
metadata.gz: bb2461aa38d0eb742520a754710c866e6e26f4268d77c44063464277044edc23b469216a37817f937adb6aafab85ec84965ecfe24067c1774691041a9ac63f0b
|
7
|
+
data.tar.gz: 237f6beca5f5177a757c1432b9dd29ba070c8c206d47f7339753ea0bc127cb7f95663b78751da24693ffcee84201ec05820ea141e9592b77826b188e3b4dbe08
|
data/.ruby-version
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.
|
1
|
+
2.1.6
|
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -16,30 +16,30 @@ Gem::Specification.new do |gem|
|
|
16
16
|
gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
|
17
17
|
gem.require_paths = ['lib']
|
18
18
|
|
19
|
-
gem.add_runtime_dependency 'rake', '~> 10.
|
19
|
+
gem.add_runtime_dependency 'rake', '~> 10.4.2'
|
20
20
|
gem.add_runtime_dependency 'redis', '~> 3.1.0'
|
21
21
|
gem.add_runtime_dependency 'sinatra', '~> 1.4.5'
|
22
|
-
gem.add_runtime_dependency 'sinatra-contrib', '~> 1.4.2'
|
23
22
|
gem.add_runtime_dependency 'rack-contrib', '~> 1.2.0'
|
24
23
|
gem.add_runtime_dependency 'rack-cors', '~> 0.2'
|
25
|
-
gem.add_runtime_dependency '
|
26
|
-
gem.add_runtime_dependency '
|
24
|
+
gem.add_runtime_dependency 'rack-jsonr', '~> 0.3.0'
|
25
|
+
gem.add_runtime_dependency 'rack-jquery-params','~> 0.1.1'
|
27
26
|
|
28
|
-
gem.add_runtime_dependency '
|
27
|
+
gem.add_runtime_dependency 'haml', '~> 4.0.5'
|
28
|
+
gem.add_runtime_dependency 'coffee-script', '~> 2.4.1'
|
29
|
+
gem.add_runtime_dependency 'coffee-script-source','= 1.8.0'
|
30
|
+
gem.add_runtime_dependency 'sass', '~> 3.4.13'
|
29
31
|
gem.add_runtime_dependency 'compass', '~> 1.0.1'
|
30
|
-
gem.add_runtime_dependency 'sprockets', '~> 2.12.
|
31
|
-
gem.add_runtime_dependency 'sprockets-sass', '~> 1.
|
32
|
+
gem.add_runtime_dependency 'sprockets', '~> 2.12.3'
|
33
|
+
gem.add_runtime_dependency 'sprockets-sass', '~> 1.3.1'
|
32
34
|
gem.add_runtime_dependency 'yui-compressor', '~> 0.12.0'
|
33
|
-
gem.add_runtime_dependency 'uglifier', '~> 2.
|
35
|
+
gem.add_runtime_dependency 'uglifier', '~> 2.7.1'
|
34
36
|
gem.add_runtime_dependency 'therubyracer', '~> 0.12.1'
|
35
|
-
|
36
|
-
gem.add_runtime_dependency 'bugsnag', '~> 2.5.0'
|
37
|
-
gem.add_runtime_dependency 'rack-jsonr', '~> 0.3.0'
|
38
|
-
gem.add_runtime_dependency 'rack-jquery-params','~> 0.1.1'
|
39
|
-
|
37
|
+
gem.add_runtime_dependency 'bugsnag', '~> 2.8.4'
|
40
38
|
gem.add_runtime_dependency 'rest_client', '= 1.7.3'
|
41
39
|
|
42
|
-
gem.add_runtime_dependency 'fanforce-base', '>=
|
43
|
-
gem.add_runtime_dependency 'fanforce-api', '>= 2.0.0.
|
44
|
-
gem.add_runtime_dependency 'fanforce-plugin-worker', '>= 2.0.0.
|
40
|
+
gem.add_runtime_dependency 'fanforce-base', '>= 2.0.0.rc2'
|
41
|
+
gem.add_runtime_dependency 'fanforce-api', '>= 2.0.0.rc4'
|
42
|
+
gem.add_runtime_dependency 'fanforce-plugin-worker', '>= 2.0.0.rc4'
|
43
|
+
|
44
|
+
gem.add_development_dependency 'fanforce-test', '>= 2.0.0.rc2'
|
45
45
|
end
|
@@ -1,3 +1,4 @@
|
|
1
|
+
require 'active_support/all'
|
1
2
|
require 'fileutils'
|
2
3
|
require 'json'
|
3
4
|
require 'yaml'
|
@@ -7,6 +8,7 @@ require_relative 'load_sprockets'
|
|
7
8
|
########################################################################################################################
|
8
9
|
|
9
10
|
Plugin = Fanforce::Plugin
|
11
|
+
Plugin.config.load_global_paths
|
10
12
|
Plugin.config.load_env
|
11
13
|
|
12
14
|
PluginWorker = Fanforce::PluginWorker
|
@@ -1,4 +1,5 @@
|
|
1
1
|
@import 'plugin_factory/directives/base-footer/base-footer';
|
2
|
+
@import 'plugin_factory/directives/campaign-added/campaign-added';
|
2
3
|
@import 'plugin_factory/directives/campaign-footer/campaign-footer';
|
3
4
|
@import 'plugin_factory/directives/error/error';
|
4
5
|
@import 'plugin_factory/directives/initiative-added/initiative-added';
|
@@ -0,0 +1,21 @@
|
|
1
|
+
App.directive('campaignAdded', [() ->
|
2
|
+
restrict: 'E',
|
3
|
+
templateUrl: '/plugin_factory/directives/campaign-added'
|
4
|
+
scope: {
|
5
|
+
campaign: '=?'
|
6
|
+
campaigns: '=?'
|
7
|
+
}
|
8
|
+
link: (($scope, $element, attrs) ->
|
9
|
+
|
10
|
+
$scope.has_reset_feature = angular.isFunction($scope.$parent.reset)
|
11
|
+
|
12
|
+
$scope.close = (->
|
13
|
+
CrossDresser.trigger('close-frame')
|
14
|
+
)
|
15
|
+
|
16
|
+
$scope.reset = (->
|
17
|
+
$scope.$parent.reset() if angular.isFunction($scope.$parent.reset)
|
18
|
+
)
|
19
|
+
|
20
|
+
)
|
21
|
+
])
|
@@ -0,0 +1,15 @@
|
|
1
|
+
$module_path: '/assets/plugin_factory/directives/campaign-added';
|
2
|
+
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
3
|
+
|
4
|
+
campaign-added { display: block; text-align: center; text-shadow: 1px 1px 0 white;
|
5
|
+
|
6
|
+
h2 { color: #c0cfa9; font-size: 25px; margin: 30px 0 0; }
|
7
|
+
h3 { color: #4a5f2a; font-size: 20px; margin-top: 8px;
|
8
|
+
a:hover { text-decoration: none; }
|
9
|
+
.campaign { border-bottom: 1px dashed #9fb280; display: inline-block; }
|
10
|
+
}
|
11
|
+
|
12
|
+
.buttons { background: #ebf9d5; display: inline-block; margin: 20px 0 ; border: 1px solid #e4f3cd; @include box-shadow(1px 1px 0 white); @include border-radius(3px); padding: 20px 50px; min-width: 60%;
|
13
|
+
.btn { margin: 0 10px; }
|
14
|
+
}
|
15
|
+
}
|
@@ -2,5 +2,5 @@ $module_path: '/assets/plugin_factory/directives/page';
|
|
2
2
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
3
3
|
|
4
4
|
page { display:block; overflow:hidden; padding-bottom: 40px;
|
5
|
-
&.
|
5
|
+
&.finished { background: #eefcd8; }
|
6
6
|
}
|
@@ -0,0 +1,698 @@
|
|
1
|
+
var CrossDresser;
|
2
|
+
(function (CrossDresser) {
|
3
|
+
function deparam(params, coerce) {
|
4
|
+
var obj = {}, coerce_types = { 'true': !0, 'false': !1, 'null': null };
|
5
|
+
// Iterate over all name=value pairs.
|
6
|
+
$.each(params.replace(/\+/g, ' ').split('&'), function (j, v) {
|
7
|
+
var param = v.split('='), key = decodeURIComponent(param[0]), val, cur = obj, i = 0,
|
8
|
+
// If key is more complex than 'foo', like 'a[]' or 'a[b][c]', split it
|
9
|
+
// into its component parts.
|
10
|
+
keys = key.split(']['), keys_last = keys.length - 1;
|
11
|
+
// If the first keys part contains [ and the last ends with ], then []
|
12
|
+
// are correctly balanced.
|
13
|
+
if (/\[/.test(keys[0]) && /\]$/.test(keys[keys_last])) {
|
14
|
+
// Remove the trailing ] from the last keys part.
|
15
|
+
keys[keys_last] = keys[keys_last].replace(/\]$/, '');
|
16
|
+
// Split first keys part into two parts on the [ and add them back onto
|
17
|
+
// the beginning of the keys array.
|
18
|
+
keys = keys.shift().split('[').concat(keys);
|
19
|
+
keys_last = keys.length - 1;
|
20
|
+
}
|
21
|
+
else {
|
22
|
+
// Basic 'foo' style key.
|
23
|
+
keys_last = 0;
|
24
|
+
}
|
25
|
+
// Are we dealing with a name=value pair, or just a name?
|
26
|
+
if (param.length === 2) {
|
27
|
+
val = decodeURIComponent(param[1]);
|
28
|
+
// Coerce values.
|
29
|
+
if (coerce) {
|
30
|
+
val = val && !isNaN(val) ? +val : val === 'undefined' ? undefined : coerce_types[val] !== undefined ? coerce_types[val] : val; // string
|
31
|
+
}
|
32
|
+
if (keys_last) {
|
33
|
+
for (; i <= keys_last; i++) {
|
34
|
+
key = keys[i] === '' ? cur.length : keys[i];
|
35
|
+
var next_key = keys[i + 1];
|
36
|
+
cur = cur[key] = (i < keys_last) ? cur[key] || (next_key && isNaN(next_key) ? {} : []) : val;
|
37
|
+
}
|
38
|
+
}
|
39
|
+
else {
|
40
|
+
// Simple key, even simpler rules, since only scalars and shallow
|
41
|
+
// arrays are allowed.
|
42
|
+
if ($.isArray(obj[key])) {
|
43
|
+
// val is already an array, so push on the next value.
|
44
|
+
obj[key].push(val);
|
45
|
+
}
|
46
|
+
else if (obj[key] !== undefined) {
|
47
|
+
// val isn't an array, but since a second value has been specified,
|
48
|
+
// convert val into an array.
|
49
|
+
obj[key] = [obj[key], val];
|
50
|
+
}
|
51
|
+
else {
|
52
|
+
// val is a scalar.
|
53
|
+
obj[key] = val;
|
54
|
+
}
|
55
|
+
}
|
56
|
+
}
|
57
|
+
else if (key) {
|
58
|
+
// No value was defined, so set something meaningful.
|
59
|
+
obj[key] = coerce ? undefined : '';
|
60
|
+
}
|
61
|
+
});
|
62
|
+
return obj;
|
63
|
+
}
|
64
|
+
CrossDresser.deparam = deparam;
|
65
|
+
;
|
66
|
+
})(CrossDresser || (CrossDresser = {}));
|
67
|
+
;
|
68
|
+
/// <reference path="jquery.d.ts" />
|
69
|
+
/// <reference path="deparam.ts" />
|
70
|
+
var CrossDresser;
|
71
|
+
(function (CrossDresser) {
|
72
|
+
var Utils = (function () {
|
73
|
+
function Utils() {
|
74
|
+
}
|
75
|
+
Utils.parseUrl = function (url) {
|
76
|
+
var uri_part_names = ["source", "scheme", "authority", "host", "port", "path", "directory_path", "file_name", "query_string", "hash"];
|
77
|
+
var uri_parts = new RegExp("^(?:([^:/?#.]+):)?(?://)?(([^:/?#]*)(?::(\\d*))?)?((/(?:[^?#](?![^?#/]*\\.[^?#/.]+(?:[\\?#]|$)))*/?)?([^?#/]*))?(?:\\?([^#]*))?(?:#(.*))?").exec(url);
|
78
|
+
var uri = {};
|
79
|
+
for (var i = 0, size = uri_part_names.length; i < size; i++) {
|
80
|
+
uri[uri_part_names[i]] = (uri_parts[i]) ? uri_parts[i] : '';
|
81
|
+
}
|
82
|
+
uri.port = uri.port ? parseInt(uri.port) : 80;
|
83
|
+
var domain_parts = (/^(.*?)\.?([^\.]*\.\w+)$/).exec(uri.host);
|
84
|
+
if (domain_parts) {
|
85
|
+
uri.sub_domain = domain_parts[1];
|
86
|
+
uri.root_domain = domain_parts[2];
|
87
|
+
}
|
88
|
+
else {
|
89
|
+
uri.sub_domain = uri.root_domain = '';
|
90
|
+
}
|
91
|
+
if (uri.directory_path.length > 0) {
|
92
|
+
uri.directory_path = uri.directory_path.replace(/\/?$/, "/");
|
93
|
+
}
|
94
|
+
return uri;
|
95
|
+
};
|
96
|
+
Utils.parseQueryString = function (query_string) {
|
97
|
+
return CrossDresser.deparam(query_string);
|
98
|
+
};
|
99
|
+
Utils.createId = function () {
|
100
|
+
var _id = '';
|
101
|
+
var possible = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
|
102
|
+
for (var i = 1; i <= 20; i++) {
|
103
|
+
_id += possible.charAt(Math.floor(Math.random() * possible.length));
|
104
|
+
}
|
105
|
+
return _id;
|
106
|
+
};
|
107
|
+
//docReady(fn, context);
|
108
|
+
//the context argument is optional - if present, it will be passed
|
109
|
+
//as an argument to the callback
|
110
|
+
Utils.documentReady = function (callback, context) {
|
111
|
+
// if ready has already fired, then just schedule the callback
|
112
|
+
// to fire asynchronously, but right away
|
113
|
+
if (readyFired) {
|
114
|
+
setTimeout(function () {
|
115
|
+
callback(context);
|
116
|
+
}, 1);
|
117
|
+
return;
|
118
|
+
}
|
119
|
+
else {
|
120
|
+
// add the function and context to the list
|
121
|
+
readyList.push({ fn: callback, ctx: context });
|
122
|
+
}
|
123
|
+
// if document already ready to go, schedule the ready function to run
|
124
|
+
if (document.readyState === 'complete') {
|
125
|
+
setTimeout(ready, 1);
|
126
|
+
}
|
127
|
+
else if (!readyEventHandlersInstalled) {
|
128
|
+
// otherwise if we don't have event handlers installed, install them
|
129
|
+
if (document.addEventListener) {
|
130
|
+
// first choice is DOMContentLoaded event
|
131
|
+
document.addEventListener('DOMContentLoaded', ready, false);
|
132
|
+
// backup is window load event
|
133
|
+
window.addEventListener('load', ready, false);
|
134
|
+
}
|
135
|
+
else {
|
136
|
+
// must be IE
|
137
|
+
document.attachEvent('onreadystatechange', readyStateChange);
|
138
|
+
window.attachEvent('onload', ready);
|
139
|
+
}
|
140
|
+
readyEventHandlersInstalled = true;
|
141
|
+
}
|
142
|
+
};
|
143
|
+
return Utils;
|
144
|
+
})();
|
145
|
+
CrossDresser.Utils = Utils;
|
146
|
+
})(CrossDresser || (CrossDresser = {}));
|
147
|
+
// DOCUMENT READY HELPERS //////////////////////////////////////////////////////////////////////////////////////////////
|
148
|
+
var readyList = [];
|
149
|
+
var readyFired = false;
|
150
|
+
var readyEventHandlersInstalled = false;
|
151
|
+
// call this when the document is ready
|
152
|
+
// this function protects itself against being called more than once
|
153
|
+
function ready() {
|
154
|
+
if (!readyFired) {
|
155
|
+
// this must be set to true before we start calling callbacks
|
156
|
+
readyFired = true;
|
157
|
+
for (var i = 0; i < readyList.length; i++) {
|
158
|
+
// if a callback here happens to add new ready handlers,
|
159
|
+
// the docReady() function will see that it already fired
|
160
|
+
// and will schedule the callback to run right after
|
161
|
+
// this event loop finishes so all handlers will still execute
|
162
|
+
// in order and no new ones will be added to the readyList
|
163
|
+
// while we are processing the list
|
164
|
+
readyList[i].fn.call(window, readyList[i].ctx);
|
165
|
+
}
|
166
|
+
// allow any closures held by these functions to free
|
167
|
+
readyList = [];
|
168
|
+
}
|
169
|
+
}
|
170
|
+
function readyStateChange() {
|
171
|
+
if (document.readyState === "complete") {
|
172
|
+
ready();
|
173
|
+
}
|
174
|
+
}
|
175
|
+
/// <reference path="jquery.d.ts" />
|
176
|
+
/// <reference path="utils.ts"/>
|
177
|
+
var CrossDresser;
|
178
|
+
(function (CrossDresser) {
|
179
|
+
var INSTANCES = {};
|
180
|
+
CrossDresser.frames = INSTANCES;
|
181
|
+
var ChildFrame = (function () {
|
182
|
+
function ChildFrame(_id) {
|
183
|
+
this._id = _id;
|
184
|
+
if (!INSTANCES[_id]) {
|
185
|
+
throw new RangeError('No frame exists by the referenced _id');
|
186
|
+
}
|
187
|
+
this.instance = INSTANCES[_id];
|
188
|
+
this.url = this.instance.url;
|
189
|
+
this.height = this.instance.height;
|
190
|
+
this.is_native = this.instance.is_native;
|
191
|
+
}
|
192
|
+
ChildFrame.prototype.trigger = function (name) {
|
193
|
+
var args = [];
|
194
|
+
for (var _i = 1; _i < arguments.length; _i++) {
|
195
|
+
args[_i - 1] = arguments[_i];
|
196
|
+
}
|
197
|
+
var callbacks = this.callbacks(name);
|
198
|
+
for (var i = 0, size = callbacks.length; i < size; i++) {
|
199
|
+
callbacks[i].apply(this, args);
|
200
|
+
}
|
201
|
+
if (name == 'native-base-ready') {
|
202
|
+
this.loadContent();
|
203
|
+
}
|
204
|
+
else if (name == 'resize-frame') {
|
205
|
+
this.resize.apply(this, args);
|
206
|
+
}
|
207
|
+
};
|
208
|
+
ChildFrame.prototype.on = function (name, callback) {
|
209
|
+
this.callbacks(name).push(callback);
|
210
|
+
};
|
211
|
+
ChildFrame.prototype.callbacks = function (name) {
|
212
|
+
if (!this.instance.callbacks[name]) {
|
213
|
+
this.instance.callbacks[name] = [];
|
214
|
+
}
|
215
|
+
return this.instance.callbacks[name];
|
216
|
+
};
|
217
|
+
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
218
|
+
ChildFrame.prototype.getElement = function () {
|
219
|
+
return this.element = this.element || $('iframe#' + this._id);
|
220
|
+
};
|
221
|
+
ChildFrame.prototype.loadContent = function () {
|
222
|
+
if (this.instance.content_prms) {
|
223
|
+
var frame = this;
|
224
|
+
this.instance.content_prms.then(function (html) {
|
225
|
+
frame.getElement()[0].contentWindow.CrossDresser.injectIntoPage(html);
|
226
|
+
});
|
227
|
+
}
|
228
|
+
};
|
229
|
+
ChildFrame.prototype.resize = function (new_height) {
|
230
|
+
new_height = (!new_height || parseInt(new_height) < 150) ? 150 : parseInt(new_height);
|
231
|
+
this.getElement().attr('height', new_height);
|
232
|
+
return null;
|
233
|
+
};
|
234
|
+
ChildFrame.create = function (settings) {
|
235
|
+
if (url) {
|
236
|
+
settings = { url: url };
|
237
|
+
}
|
238
|
+
var _id = CrossDresser.Utils.createId();
|
239
|
+
var url = settings.url.replace(/^\/\//, 'http://');
|
240
|
+
var attrs = settings.attrs || {};
|
241
|
+
var width = settings.width || 500;
|
242
|
+
var height = settings.height || 450;
|
243
|
+
var is_native = false;
|
244
|
+
if (settings.use_native_base) {
|
245
|
+
var goto_url = ((url.indexOf('?') > -1) ? url + '&' : url + '?') + $.param(attrs);
|
246
|
+
var content_prms = $.ajax({
|
247
|
+
url: goto_url,
|
248
|
+
dataType: 'jsonp',
|
249
|
+
jsonp: 'callback'
|
250
|
+
});
|
251
|
+
url = settings.use_native_base;
|
252
|
+
attrs = {};
|
253
|
+
is_native = true;
|
254
|
+
}
|
255
|
+
attrs.crss_drssr = _id + '::' + encodeURIComponent(CrossDresser.current.getConduitUrl());
|
256
|
+
if (goto_url) {
|
257
|
+
attrs.crss_drssr += '::' + encodeURIComponent(goto_url);
|
258
|
+
}
|
259
|
+
url = (url.indexOf('?') > -1) ? url + '&' : url + '?';
|
260
|
+
url += $.param(attrs);
|
261
|
+
INSTANCES[_id] = {
|
262
|
+
callbacks: {},
|
263
|
+
width: width,
|
264
|
+
height: height,
|
265
|
+
url: url,
|
266
|
+
is_native: is_native,
|
267
|
+
content_prms: content_prms
|
268
|
+
};
|
269
|
+
return new ChildFrame(_id);
|
270
|
+
};
|
271
|
+
ChildFrame.find = function (_id) {
|
272
|
+
if (INSTANCES[_id]) {
|
273
|
+
return new ChildFrame(_id);
|
274
|
+
}
|
275
|
+
};
|
276
|
+
ChildFrame.trigger = function (_id, name, args) {
|
277
|
+
var instance = this.find(_id);
|
278
|
+
if (!instance) {
|
279
|
+
throw ('could not find instance: ' + _id);
|
280
|
+
}
|
281
|
+
args = args.slice(0);
|
282
|
+
args.unshift(name);
|
283
|
+
instance.trigger.apply(instance, args);
|
284
|
+
};
|
285
|
+
return ChildFrame;
|
286
|
+
})();
|
287
|
+
CrossDresser.ChildFrame = ChildFrame;
|
288
|
+
})(CrossDresser || (CrossDresser = {}));
|
289
|
+
/// <reference path="jquery.d.ts" />
|
290
|
+
/// <reference path="utils.ts"/>
|
291
|
+
/// <reference path="base.ts"/>
|
292
|
+
var CrossDresser;
|
293
|
+
(function (CrossDresser) {
|
294
|
+
var INSTANCES = {};
|
295
|
+
var DEFAULT_WIDTH = 500;
|
296
|
+
var DEFAULT_HEIGHT = 450;
|
297
|
+
var ChildPopup = (function () {
|
298
|
+
function ChildPopup(_id) {
|
299
|
+
this._id = _id;
|
300
|
+
if (!INSTANCES[_id]) {
|
301
|
+
throw new RangeError('No frame exists by the referenced _id');
|
302
|
+
}
|
303
|
+
this.instance = INSTANCES[_id];
|
304
|
+
this.name = this.instance.name;
|
305
|
+
this.url = this.instance.url;
|
306
|
+
this.width = this.instance.width;
|
307
|
+
this.height = this.instance.height;
|
308
|
+
}
|
309
|
+
ChildPopup.prototype.trigger = function (name) {
|
310
|
+
var args = [];
|
311
|
+
for (var _i = 1; _i < arguments.length; _i++) {
|
312
|
+
args[_i - 1] = arguments[_i];
|
313
|
+
}
|
314
|
+
var callbacks = this.callbacks(name);
|
315
|
+
for (var i = 0, size = callbacks.length; i < size; i++) {
|
316
|
+
callbacks[i].apply(this, args);
|
317
|
+
}
|
318
|
+
};
|
319
|
+
ChildPopup.prototype.on = function (name, callback) {
|
320
|
+
this.callbacks(name).push(callback);
|
321
|
+
};
|
322
|
+
ChildPopup.prototype.callbacks = function (name) {
|
323
|
+
if (!this.instance.callbacks[name]) {
|
324
|
+
this.instance.callbacks[name] = [];
|
325
|
+
}
|
326
|
+
return this.instance.callbacks[name];
|
327
|
+
};
|
328
|
+
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
329
|
+
ChildPopup.prototype.open = function () {
|
330
|
+
setTimeout(function () {
|
331
|
+
var width = this.width, height = this.height, top = (window.screen.height / 2) - (height / 2), left = (window.screen.width / 2) - (width / 2);
|
332
|
+
top = top - (top * 0.2);
|
333
|
+
window.open(this.url, this.name, 'toolbar=0,scrollbars=0,location=0,statusbar=0,menubar=0,resizable=1,width=' + width + ',height=' + height + ',top=' + top + ',left=' + left);
|
334
|
+
}.bind(this));
|
335
|
+
};
|
336
|
+
ChildPopup.create = function (settings) {
|
337
|
+
if (url) {
|
338
|
+
settings = { url: url };
|
339
|
+
}
|
340
|
+
var _id = CrossDresser.Utils.createId();
|
341
|
+
var attrs = settings.attrs || {};
|
342
|
+
var url = settings.url.replace(/^\/\//, 'http://');
|
343
|
+
var width = settings.width || DEFAULT_WIDTH;
|
344
|
+
var height = settings.height || DEFAULT_HEIGHT;
|
345
|
+
var name = settings.name || _id;
|
346
|
+
attrs.crss_drssr = _id + '::' + encodeURIComponent(CrossDresser.current.getConduitUrl());
|
347
|
+
url = (url.indexOf('?') > -1) ? url + '&' : url + '?';
|
348
|
+
url += $.param(attrs);
|
349
|
+
INSTANCES[_id] = {
|
350
|
+
url: url,
|
351
|
+
name: name,
|
352
|
+
width: width,
|
353
|
+
height: height,
|
354
|
+
callbacks: {}
|
355
|
+
};
|
356
|
+
return new ChildPopup(_id);
|
357
|
+
};
|
358
|
+
ChildPopup.find = function (_id) {
|
359
|
+
if (INSTANCES[_id]) {
|
360
|
+
return new ChildPopup(_id);
|
361
|
+
}
|
362
|
+
};
|
363
|
+
ChildPopup.trigger = function (_id, name, args) {
|
364
|
+
var instance = this.find(_id);
|
365
|
+
if (!instance) {
|
366
|
+
throw ('could not find instance: ' + _id);
|
367
|
+
}
|
368
|
+
args = args.slice(0);
|
369
|
+
args.unshift(name);
|
370
|
+
instance.trigger.apply(instance, args);
|
371
|
+
};
|
372
|
+
return ChildPopup;
|
373
|
+
})();
|
374
|
+
CrossDresser.ChildPopup = ChildPopup;
|
375
|
+
})(CrossDresser || (CrossDresser = {}));
|
376
|
+
var CrossDresser;
|
377
|
+
(function (CrossDresser) {
|
378
|
+
var resizer;
|
379
|
+
(function (resizer) {
|
380
|
+
var ELEMENTS_IN_HEIGHT = {};
|
381
|
+
var ELEMENT_HEIGHT_COUNT = 0;
|
382
|
+
var MIN_HEIGHT = 150;
|
383
|
+
var HEIGHT = 'auto';
|
384
|
+
var CURRENT_HEIGHT;
|
385
|
+
var CALLBACKS = {};
|
386
|
+
var AUTOSIZE_INTERVAL;
|
387
|
+
function run(args) {
|
388
|
+
if (!CrossDresser.current.is_frame)
|
389
|
+
return console.log('Notice: Skipping resize since we\'re not inside an iframe');
|
390
|
+
if (args == false)
|
391
|
+
return disableAutosize();
|
392
|
+
if (!args)
|
393
|
+
return calculateResize();
|
394
|
+
var has_changes = false;
|
395
|
+
var new_min_height = extractMinHeight(args);
|
396
|
+
if (new_min_height != MIN_HEIGHT) {
|
397
|
+
MIN_HEIGHT = new_min_height;
|
398
|
+
has_changes = true;
|
399
|
+
}
|
400
|
+
var new_height = extractHeight(args);
|
401
|
+
if (new_height != HEIGHT) {
|
402
|
+
if (new_height == 'auto')
|
403
|
+
enableAutosize();
|
404
|
+
if (!isNaN(new_height))
|
405
|
+
HEIGHT = new_height;
|
406
|
+
has_changes = true;
|
407
|
+
}
|
408
|
+
if (has_changes)
|
409
|
+
calculateResize();
|
410
|
+
}
|
411
|
+
resizer.run = run;
|
412
|
+
function addToHeightCalculations(element) {
|
413
|
+
var $element = $(element);
|
414
|
+
if (!$element.data('ffcore-element-id')) {
|
415
|
+
$element.data('ffcore-element-id', ELEMENT_HEIGHT_COUNT++);
|
416
|
+
}
|
417
|
+
ELEMENTS_IN_HEIGHT[$element.data('ffcore-element-id')] = $element;
|
418
|
+
}
|
419
|
+
resizer.addToHeightCalculations = addToHeightCalculations;
|
420
|
+
function removeFromHeightCalculations(element) {
|
421
|
+
delete ELEMENTS_IN_HEIGHT[$(element).data('ffcore-element-id')];
|
422
|
+
}
|
423
|
+
resizer.removeFromHeightCalculations = removeFromHeightCalculations;
|
424
|
+
function enableAutosize(interval) {
|
425
|
+
interval = interval || (CrossDresser.current.is_native ? 500 : 1000);
|
426
|
+
interval = interval < 100 ? 100 : interval;
|
427
|
+
if (AUTOSIZE_INTERVAL)
|
428
|
+
clearInterval(AUTOSIZE_INTERVAL);
|
429
|
+
HEIGHT = 'auto';
|
430
|
+
AUTOSIZE_INTERVAL = setInterval(function () {
|
431
|
+
calculateResize();
|
432
|
+
}, interval);
|
433
|
+
run();
|
434
|
+
}
|
435
|
+
resizer.enableAutosize = enableAutosize;
|
436
|
+
function disableAutosize() {
|
437
|
+
if (AUTOSIZE_INTERVAL) {
|
438
|
+
clearInterval(AUTOSIZE_INTERVAL);
|
439
|
+
}
|
440
|
+
}
|
441
|
+
resizer.disableAutosize = disableAutosize;
|
442
|
+
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
443
|
+
function calculateResize() {
|
444
|
+
var new_height = $('html').css('height', 'auto').height();
|
445
|
+
for (var k in ELEMENTS_IN_HEIGHT) {
|
446
|
+
var $elem = ELEMENTS_IN_HEIGHT[k];
|
447
|
+
if ($elem.css('position') != 'absolute')
|
448
|
+
continue;
|
449
|
+
var element_bottom = $elem.offset().top + $elem.outerHeight();
|
450
|
+
if (element_bottom > new_height)
|
451
|
+
new_height = element_bottom;
|
452
|
+
}
|
453
|
+
if (CURRENT_HEIGHT && new_height < MIN_HEIGHT)
|
454
|
+
new_height = MIN_HEIGHT;
|
455
|
+
var viewport_height = $(window).height();
|
456
|
+
if (CURRENT_HEIGHT && ((CURRENT_HEIGHT == viewport_height) || (CURRENT_HEIGHT < viewport_height + 10 && CURRENT_HEIGHT > viewport_height - 10))) {
|
457
|
+
if ((CURRENT_HEIGHT == new_height) || (CURRENT_HEIGHT < new_height + 10 && CURRENT_HEIGHT > new_height - 10))
|
458
|
+
return;
|
459
|
+
}
|
460
|
+
CURRENT_HEIGHT = (new_height < MIN_HEIGHT) ? MIN_HEIGHT : new_height;
|
461
|
+
CrossDresser.trigger('resize-frame', CURRENT_HEIGHT);
|
462
|
+
}
|
463
|
+
function extractMinHeight(args) {
|
464
|
+
var height;
|
465
|
+
if (args['min-height'])
|
466
|
+
height = args['min-height'];
|
467
|
+
if (args.minHeight)
|
468
|
+
height = args.minHeight;
|
469
|
+
if (args.min_height)
|
470
|
+
height = args.min_height;
|
471
|
+
height = parseInt(height);
|
472
|
+
return height == NaN ? 0 : height;
|
473
|
+
}
|
474
|
+
function extractHeight(args) {
|
475
|
+
var height;
|
476
|
+
if (args['height'])
|
477
|
+
height = args['height'];
|
478
|
+
height = parseInt(height);
|
479
|
+
return height == NaN ? 'auto' : height;
|
480
|
+
}
|
481
|
+
})(resizer = CrossDresser.resizer || (CrossDresser.resizer = {}));
|
482
|
+
})(CrossDresser || (CrossDresser = {}));
|
483
|
+
var CrossDresser;
|
484
|
+
(function (_CrossDresser) {
|
485
|
+
var conduit;
|
486
|
+
(function (conduit) {
|
487
|
+
function run(command, args) {
|
488
|
+
var promise;
|
489
|
+
if (_CrossDresser.current.is_native) {
|
490
|
+
promise = toParent(command, args);
|
491
|
+
}
|
492
|
+
else {
|
493
|
+
promise = toIframe(command, args);
|
494
|
+
}
|
495
|
+
return promise;
|
496
|
+
}
|
497
|
+
conduit.run = run;
|
498
|
+
function executeRemoteCommand(CrossDresser, child_type, child_id, command, args) {
|
499
|
+
var methods = {
|
500
|
+
frame: function () {
|
501
|
+
CrossDresser.ChildFrame.trigger(child_id, command, args);
|
502
|
+
},
|
503
|
+
popup: function () {
|
504
|
+
CrossDresser.ChildPopup.trigger(child_id, command, args);
|
505
|
+
}
|
506
|
+
};
|
507
|
+
methods[child_type]();
|
508
|
+
}
|
509
|
+
function toParent(command, args) {
|
510
|
+
var dfr = $.Deferred();
|
511
|
+
executeRemoteCommand(_CrossDresser.current.parent.CrossDresser, _CrossDresser.current.environment, _CrossDresser.current._id, command, args);
|
512
|
+
return dfr.resolve().promise();
|
513
|
+
}
|
514
|
+
function toIframe(command, args) {
|
515
|
+
var dfr = $.Deferred();
|
516
|
+
var attrs = {
|
517
|
+
_id: _CrossDresser.current._id,
|
518
|
+
command: command,
|
519
|
+
environment: _CrossDresser.current.environment,
|
520
|
+
args: args
|
521
|
+
};
|
522
|
+
var url = _CrossDresser.current.parent_conduit_url;
|
523
|
+
url = ((url.indexOf('?') > -1) ? url + '&' : url + '?') + $.param(attrs);
|
524
|
+
_CrossDresser.Utils.documentReady(function () {
|
525
|
+
var $iframe = $('ff-frame-controller');
|
526
|
+
if ($iframe)
|
527
|
+
$iframe.remove();
|
528
|
+
$iframe = $('<iframe id="ff-frame-controller" src="' + url + '" width="10" height="10" style="position : absolute; top : 0px; left : 0px; visibility: hidden"></iframe>');
|
529
|
+
$iframe.appendTo('body');
|
530
|
+
$iframe.load(function () {
|
531
|
+
dfr.resolve();
|
532
|
+
});
|
533
|
+
});
|
534
|
+
return dfr.promise();
|
535
|
+
}
|
536
|
+
function fromIframe(environment, url) {
|
537
|
+
var uri = _CrossDresser.Utils.parseUrl(url);
|
538
|
+
var params = _CrossDresser.Utils.parseQueryString(uri.query_string);
|
539
|
+
if (environment != params.environment) {
|
540
|
+
throw Error('environment does not match params.environment');
|
541
|
+
}
|
542
|
+
executeRemoteCommand(CrossDresser, environment, params._id, params.command, params.args);
|
543
|
+
}
|
544
|
+
conduit.fromIframe = fromIframe;
|
545
|
+
})(conduit = _CrossDresser.conduit || (_CrossDresser.conduit = {}));
|
546
|
+
})(CrossDresser || (CrossDresser = {}));
|
547
|
+
/// <reference path="utils.ts"/>
|
548
|
+
/// <reference path="conduit.ts"/>
|
549
|
+
var CrossDresser;
|
550
|
+
(function (CrossDresser) {
|
551
|
+
var CONDUIT_PATH = '/cross-dresser.html';
|
552
|
+
var CALLBACKS = {};
|
553
|
+
var Current = (function () {
|
554
|
+
function Current() {
|
555
|
+
this.config = {
|
556
|
+
conduit_path: CONDUIT_PATH
|
557
|
+
};
|
558
|
+
this.raw_url = document.location.href;
|
559
|
+
this.raw_uri = CrossDresser.Utils.parseUrl(this.raw_url);
|
560
|
+
this.raw_params = CrossDresser.Utils.parseQueryString(this.raw_uri.query_string);
|
561
|
+
try {
|
562
|
+
if (window.opener || (window.top && window.top.opener)) {
|
563
|
+
this.environment = 'popup';
|
564
|
+
this.parent = window.opener || window.top.opener;
|
565
|
+
this.is_popup = true;
|
566
|
+
}
|
567
|
+
else if (window.top && window.top != window.self && document.referrer != this.raw_url.replace(document.location.hash, '')) {
|
568
|
+
this.environment = 'frame';
|
569
|
+
this.parent = window.top;
|
570
|
+
this.is_frame = true;
|
571
|
+
this.is_native = this.isNativeFrame();
|
572
|
+
}
|
573
|
+
else {
|
574
|
+
this.environment = 'toplevel';
|
575
|
+
this.parent = null;
|
576
|
+
}
|
577
|
+
}
|
578
|
+
catch (err) {
|
579
|
+
this.environment = 'toplevel';
|
580
|
+
}
|
581
|
+
this.initiateDocumentLoad();
|
582
|
+
if (this.is_frame) {
|
583
|
+
setTimeout(function () {
|
584
|
+
CrossDresser.resizer.enableAutosize();
|
585
|
+
});
|
586
|
+
}
|
587
|
+
}
|
588
|
+
Current.prototype.isNativeFrame = function () {
|
589
|
+
try {
|
590
|
+
var parent_host = CrossDresser.Utils.parseUrl(window.top.location.href).host;
|
591
|
+
var current_host = this.raw_uri.host;
|
592
|
+
return (parent_host == current_host) ? true : false;
|
593
|
+
}
|
594
|
+
catch (err) {
|
595
|
+
return false;
|
596
|
+
}
|
597
|
+
};
|
598
|
+
Current.prototype.getConduitUrl = function () {
|
599
|
+
return this.raw_uri.scheme + '://' + this.raw_uri.host + ([80, 443].indexOf(this.raw_uri.port) > -1 ? '' : ':' + this.raw_uri.port) + (this.config.conduit_path || CONDUIT_PATH);
|
600
|
+
};
|
601
|
+
Current.prototype.initiateDocumentLoad = function () {
|
602
|
+
var _this = this;
|
603
|
+
if (!this.raw_params.crss_drssr) {
|
604
|
+
return;
|
605
|
+
}
|
606
|
+
var array = this.raw_params.crss_drssr.split('::');
|
607
|
+
this._id = array[0];
|
608
|
+
this.parent_conduit_url = decodeURIComponent(array[1]);
|
609
|
+
if (array[2]) {
|
610
|
+
this.url_to_load = decodeURIComponent(array[2]);
|
611
|
+
}
|
612
|
+
if (this.url_to_load && !this.is_native) {
|
613
|
+
var url = this.url_to_load;
|
614
|
+
var crss_drssr = this._id + '::' + encodeURIComponent(this.parent_conduit_url);
|
615
|
+
window.location.href = ((url.indexOf('?') > -1) ? url + '&' : url + '?') + 'crss_drssr=' + crss_drssr;
|
616
|
+
}
|
617
|
+
else if (this.url_to_load && this.is_native) {
|
618
|
+
this.url = this.url_to_load;
|
619
|
+
this.uri = CrossDresser.Utils.parseUrl(this.url_to_load);
|
620
|
+
this.params = CrossDresser.Utils.parseQueryString(this.uri.query_string);
|
621
|
+
var bt = document.createElement('base');
|
622
|
+
bt.setAttribute('href', 'http://' + this.uri.host);
|
623
|
+
document.getElementsByTagName('head')[0].appendChild(bt);
|
624
|
+
setTimeout(function () {
|
625
|
+
_this.trigger('native-base-ready', _this.url_to_load);
|
626
|
+
});
|
627
|
+
}
|
628
|
+
else if (this.environment == 'toplevel') {
|
629
|
+
console.log('NOTICE: CrossDresser parent not found - running as toplevel');
|
630
|
+
}
|
631
|
+
else {
|
632
|
+
this.url = this.raw_url;
|
633
|
+
this.uri = this.raw_uri;
|
634
|
+
this.params = this.raw_params;
|
635
|
+
}
|
636
|
+
};
|
637
|
+
Current.prototype.trigger = function (name) {
|
638
|
+
var args = [];
|
639
|
+
for (var _i = 1; _i < arguments.length; _i++) {
|
640
|
+
args[_i - 1] = arguments[_i];
|
641
|
+
}
|
642
|
+
var promise = CrossDresser.conduit.run(name, args);
|
643
|
+
var callbacks = CALLBACKS[name] || [];
|
644
|
+
setTimeout(function () {
|
645
|
+
for (var i = 0, length = callbacks.length; i < length; i++) {
|
646
|
+
callbacks[i].apply(CrossDresser.current, args);
|
647
|
+
}
|
648
|
+
});
|
649
|
+
return promise;
|
650
|
+
};
|
651
|
+
Current.prototype.on = function (name, callback) {
|
652
|
+
CALLBACKS[name] = CALLBACKS[name] || [];
|
653
|
+
CALLBACKS[name].push(callback);
|
654
|
+
};
|
655
|
+
return Current;
|
656
|
+
})();
|
657
|
+
function config(config) {
|
658
|
+
CrossDresser.current.config.conduit_path = config.conduit_path || CrossDresser.current.config.conduit_path || CONDUIT_PATH;
|
659
|
+
}
|
660
|
+
CrossDresser.config = config;
|
661
|
+
function injectIntoPage(html) {
|
662
|
+
$(function () {
|
663
|
+
$('body').html(html);
|
664
|
+
});
|
665
|
+
}
|
666
|
+
CrossDresser.injectIntoPage = injectIntoPage;
|
667
|
+
CrossDresser.current = new Current();
|
668
|
+
})(CrossDresser || (CrossDresser = {}));
|
669
|
+
/// <reference path="child_frame.ts"/>
|
670
|
+
/// <reference path="child_popup.ts"/>
|
671
|
+
/// <reference path="resizer.ts"/>
|
672
|
+
/// <reference path="current.ts"/>
|
673
|
+
var CrossDresser;
|
674
|
+
(function (CrossDresser) {
|
675
|
+
function createFrame() {
|
676
|
+
var args = [];
|
677
|
+
for (var _i = 0; _i < arguments.length; _i++) {
|
678
|
+
args[_i - 0] = arguments[_i];
|
679
|
+
}
|
680
|
+
return CrossDresser.ChildFrame.create.apply(CrossDresser.ChildFrame, args);
|
681
|
+
}
|
682
|
+
CrossDresser.createFrame = createFrame;
|
683
|
+
function createPopup() {
|
684
|
+
var args = [];
|
685
|
+
for (var _i = 0; _i < arguments.length; _i++) {
|
686
|
+
args[_i - 0] = arguments[_i];
|
687
|
+
}
|
688
|
+
return CrossDresser.ChildPopup.create.apply(CrossDresser.ChildPopup, args);
|
689
|
+
}
|
690
|
+
CrossDresser.createPopup = createPopup;
|
691
|
+
function resize(args) {
|
692
|
+
CrossDresser.resizer.run(args);
|
693
|
+
}
|
694
|
+
CrossDresser.resize = resize;
|
695
|
+
CrossDresser.trigger = CrossDresser.current.trigger;
|
696
|
+
CrossDresser.on = CrossDresser.current.on;
|
697
|
+
})(CrossDresser || (CrossDresser = {}));
|
698
|
+
;
|