openxjs-rails 1.0.0.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,15 @@
1
+ ---
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: !binary |-
4
+ NDEwNWRlNTlmYzliY2FlMWZkOGYwMzlmYjViMzg0MGViZjk2MWVhNg==
5
+ data.tar.gz: !binary |-
6
+ Mjk0MTJjMWJkYmI1MWM5ZDFiZTA3NGZlYTI0MDhlZjg2NmJiNmVmMQ==
7
+ !binary "U0hBNTEy":
8
+ metadata.gz: !binary |-
9
+ YzhlMmUyMjZhZWMzZGI3Y2NmZjkxNDQ0ZjMzYTUzYWM5YzlmZmE2MTU0OTc5
10
+ ZGRlM2E1ZTBiNjgzMzJmMTI3MmJiZjk5ZThhMDg1OTg5N2FlMzFlNzI4ZTQ1
11
+ ZDVkN2YzM2RhYmZmNWFlMTlhZGZiYjlhNjZjY2QzMDAwNWEyNGM=
12
+ data.tar.gz: !binary |-
13
+ ZjU4YzUyMTRhN2NkNTBlNTM0NDRhZTg1ZmI5Zjg1OGJkYTE3YzI5MDIzZDhm
14
+ YjNmMjc2ZGViMTc2N2QyYWRmNmFkOTA5MDhjM2FiOThiMDEwZDkxMTBkZmI3
15
+ ZjE0ZDI1YTZlZjUyOTA5ZTNjNWQ1MmIwZmIwNjQ5YjgxNTRhZTg=
@@ -0,0 +1,2 @@
1
+ Gemfile.lock
2
+ pkg/
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in sinon-rails.gemspec
4
+ gemspec
@@ -0,0 +1,30 @@
1
+ # openxjs-rails
2
+ [![Dependency Status](https://gemnasium.com/softgames/openxjs-rails.png)](https://gemnasium.com/softgames/openxjs-rails)
3
+
4
+ ## Installation
5
+
6
+ Add this line to your application's Gemfile:
7
+
8
+ gem 'openxjs-rails'
9
+
10
+ And then execute:
11
+
12
+ $ bundle
13
+
14
+ Add this line to your test manifest file:
15
+
16
+ //=require openxjs
17
+
18
+ ## Usage
19
+
20
+ Read more about openxjs [here](http://github.com/softgames/openxjs).
21
+
22
+ ## Contributing
23
+
24
+ openxjs is maintained by [Softgames](http://github.com/softgames)
25
+
26
+ 1. Fork it
27
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
28
+ 3. Commit your changes (`git commit -am 'Added some feature'`)
29
+ 4. Push to the branch (`git push origin my-new-feature`)
30
+ 5. Create a new Pull Request
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env rake
2
+ require "bundler/gem_tasks"
@@ -0,0 +1,5 @@
1
+ module Openxjs
2
+ module Rails
3
+ require 'openxjs/rails/engine' if defined?(Rails)
4
+ end
5
+ end
@@ -0,0 +1,9 @@
1
+ require 'rails'
2
+
3
+ module Openxjs
4
+ module Rails
5
+ class Engine < ::Rails::Engine
6
+ # making class enables assets pipeline
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,5 @@
1
+ module Openxjs
2
+ module Rails
3
+ VERSION = "1.0.0.0"
4
+ end
5
+ end
@@ -0,0 +1,17 @@
1
+ # -*- encoding: utf-8 -*-
2
+ require File.expand_path('../lib/openxjs/rails/version', __FILE__)
3
+
4
+ Gem::Specification.new do |gem|
5
+ gem.authors = ["Softgames GmbH"]
6
+ gem.email = ["scotty@softgames.de"]
7
+ gem.summary = %q{openxjs.js via asset pipeline}
8
+ gem.homepage = "http://github.com/softgames/openxjs-rails"
9
+
10
+ gem.files = `git ls-files`.split("\n")
11
+ gem.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
12
+ gem.name = "openxjs-rails"
13
+ gem.require_paths = ["lib"]
14
+ gem.version = Openxjs::Rails::VERSION
15
+
16
+ gem.add_dependency 'railties', '>= 3.1'
17
+ end
@@ -0,0 +1,177 @@
1
+ // Generated by CoffeeScript 1.6.1
2
+
3
+ /*
4
+ OpenXJS
5
+ Copyright(c) 2013 Softgames GmbH <scotty@softgames.de>
6
+ */
7
+
8
+
9
+ (function() {
10
+
11
+ window.OpenXJS = (function() {
12
+
13
+ OpenXJS.prototype.spcScript = "spc.php";
14
+
15
+ function OpenXJS(options) {
16
+ this.deliveryUrl = options.deliveryUrl;
17
+ this.defaultParameters = options.parameters;
18
+ }
19
+
20
+ OpenXJS.prototype.displayAds = function(zonesMapping, parameters, callback) {
21
+ var _this = this;
22
+ return this.receiveAdCodes(zonesMapping, parameters, function(codes) {
23
+ var code, target;
24
+ for (target in codes) {
25
+ code = codes[target];
26
+ _this._displayAd(target, code);
27
+ }
28
+ return typeof callback === "function" ? callback() : void 0;
29
+ });
30
+ };
31
+
32
+ OpenXJS.prototype.receiveAdCodes = function(zonesMapping, parameters, callback) {
33
+ var openXParameters, scriptUrl,
34
+ _this = this;
35
+ openXParameters = this._openxParameters(zonesMapping, parameters);
36
+ scriptUrl = this.deliveryUrl + this.spcScript + "?" + this._queryString(openXParameters);
37
+ return this._loadScript(scriptUrl, function() {
38
+ return _this._parseResponse(zonesMapping, callback);
39
+ });
40
+ };
41
+
42
+ OpenXJS.prototype._parseResponse = function(zonesMapping, callback) {
43
+ var codes, target, zone;
44
+ codes = {};
45
+ if (typeof window.OA_output !== "object") {
46
+ window.OA_output = null;
47
+ if (typeof callback === "function") {
48
+ callback(codes);
49
+ }
50
+ return;
51
+ }
52
+ for (target in zonesMapping) {
53
+ zone = zonesMapping[target];
54
+ if (this._emptyResponse(window.OA_output[target])) {
55
+ continue;
56
+ }
57
+ codes[target] = window.OA_output[target];
58
+ }
59
+ window.OA_output = null;
60
+ return typeof callback === "function" ? callback(codes) : void 0;
61
+ };
62
+
63
+ OpenXJS.prototype._displayAd = function(target, code) {
64
+ var targetElement;
65
+ targetElement = document.getElementById(target);
66
+ if (targetElement === null) {
67
+ return;
68
+ }
69
+ return document.getElementById(target).innerHTML = code;
70
+ };
71
+
72
+ OpenXJS.prototype._openxParameters = function(zonesMapping, parameters) {
73
+ var key, mappingString, mergedParameters, openXParameters, target, value, zone;
74
+ mergedParameters = this._mergeObjects(this.defaultParameters, parameters);
75
+ mappingString = "|";
76
+ for (target in zonesMapping) {
77
+ zone = zonesMapping[target];
78
+ mappingString += "" + target + "=" + zone + "|";
79
+ }
80
+ openXParameters = {
81
+ zones: mappingString,
82
+ nz: 1,
83
+ blockcampaign: 1,
84
+ charset: this._documentCharset(),
85
+ cb: this._randomNumber(),
86
+ r: this._randomNumber(),
87
+ loc: this._location(),
88
+ referer: this._referrer()
89
+ };
90
+ for (key in mergedParameters) {
91
+ value = mergedParameters[key];
92
+ openXParameters[key] = value;
93
+ }
94
+ return openXParameters;
95
+ };
96
+
97
+ OpenXJS.prototype._loadScript = function(url, callback) {
98
+ var called, s,
99
+ _this = this;
100
+ s = document.createElement('script');
101
+ s.async = "async";
102
+ called = false;
103
+ s.onload = s.onreadystatechange = function() {
104
+ if ((s.readyState && !(/complete|loaded/.test(s.readyState))) || called) {
105
+ return;
106
+ }
107
+ called = true;
108
+ s.onload = s.onreadystatechange = null;
109
+ return typeof callback === "function" ? callback() : void 0;
110
+ };
111
+ s.src = url;
112
+ return this._appendToHead(s);
113
+ };
114
+
115
+ OpenXJS.prototype._randomNumber = function() {
116
+ return Math.floor(Math.random() * 99999999999);
117
+ };
118
+
119
+ OpenXJS.prototype._location = function() {
120
+ return window.location;
121
+ };
122
+
123
+ OpenXJS.prototype._referrer = function() {
124
+ return document.referrer;
125
+ };
126
+
127
+ OpenXJS.prototype._documentCharset = function() {
128
+ if (document.charset) {
129
+ return document.charset;
130
+ } else {
131
+ if (document.characterSet) {
132
+ return document.characterSet;
133
+ } else {
134
+ return "";
135
+ }
136
+ }
137
+ };
138
+
139
+ OpenXJS.prototype._emptyResponse = function(response) {
140
+ return typeof response !== "string" || response === "" || response === "<a href=\'F\' target=\'_blank\'><img src=\'F\' border=\'0\' alt=\'\'></a>\n";
141
+ };
142
+
143
+ OpenXJS.prototype._queryString = function(parameters) {
144
+ var elements, name, value;
145
+ elements = [];
146
+ for (name in parameters) {
147
+ value = parameters[name];
148
+ if (value != null) {
149
+ elements.push("" + name + "=" + (encodeURIComponent(value)));
150
+ }
151
+ }
152
+ return elements.join('&');
153
+ };
154
+
155
+ OpenXJS.prototype._appendToHead = function(element) {
156
+ var head;
157
+ head = document.head || document.getElementsByTagName("head")[0] || document.documentElement;
158
+ return head.insertBefore(element, head.firstChild);
159
+ };
160
+
161
+ OpenXJS.prototype._mergeObjects = function(obj1, obj2) {
162
+ var attrname, obj3;
163
+ obj3 = {};
164
+ for (attrname in obj1) {
165
+ obj3[attrname] = obj1[attrname];
166
+ }
167
+ for (attrname in obj2) {
168
+ obj3[attrname] = obj2[attrname];
169
+ }
170
+ return obj3;
171
+ };
172
+
173
+ return OpenXJS;
174
+
175
+ })();
176
+
177
+ }).call(this);
metadata ADDED
@@ -0,0 +1,66 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: openxjs-rails
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Softgames GmbH
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2013-03-07 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: railties
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ! '>='
18
+ - !ruby/object:Gem::Version
19
+ version: '3.1'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ! '>='
25
+ - !ruby/object:Gem::Version
26
+ version: '3.1'
27
+ description:
28
+ email:
29
+ - scotty@softgames.de
30
+ executables: []
31
+ extensions: []
32
+ extra_rdoc_files: []
33
+ files:
34
+ - .gitignore
35
+ - Gemfile
36
+ - README.md
37
+ - Rakefile
38
+ - lib/openxjs-rails.rb
39
+ - lib/openxjs/rails/engine.rb
40
+ - lib/openxjs/rails/version.rb
41
+ - openxjs-rails.gemspec
42
+ - vendor/assets/javascripts/openxjs.js
43
+ homepage: http://github.com/softgames/openxjs-rails
44
+ licenses: []
45
+ metadata: {}
46
+ post_install_message:
47
+ rdoc_options: []
48
+ require_paths:
49
+ - lib
50
+ required_ruby_version: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ! '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ required_rubygems_version: !ruby/object:Gem::Requirement
56
+ requirements:
57
+ - - ! '>='
58
+ - !ruby/object:Gem::Version
59
+ version: '0'
60
+ requirements: []
61
+ rubyforge_project:
62
+ rubygems_version: 2.0.2
63
+ signing_key:
64
+ specification_version: 4
65
+ summary: openxjs.js via asset pipeline
66
+ test_files: []