add-to-homescreen-rails 2.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,17 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ .yardoc
6
+ Gemfile.lock
7
+ InstalledFiles
8
+ _yardoc
9
+ coverage
10
+ doc/
11
+ lib/bundler/man
12
+ pkg
13
+ rdoc
14
+ spec/reports
15
+ test/tmp
16
+ test/version_tmp
17
+ tmp
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in add-to-homescreen-rails.gemspec
4
+ gemspec
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2012 RogerE
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,36 @@
1
+ # 'Add to Home screen' for Rails
2
+
3
+ This gem vendors the 'Add to Home screen' assets for Rails 3.1 and greater.
4
+ The files will be added to the asset pipeline and available for you to use.
5
+
6
+ For info on how to use the plugin see the original documentation:
7
+
8
+ [Add to Home screen](http://cubiq.org/add-to-home-screen)
9
+
10
+ Praise for creating this tool should of course be directed at [Matteo Spinelli](http://cubiq.org/)!
11
+
12
+ For the orignal javascript and css file go to his [Github repository](https://github.com/cubiq/add-to-homescreen).
13
+
14
+ ## Usage
15
+
16
+ In your Gemfile, add:
17
+
18
+ ```ruby
19
+ group :assets do
20
+ gem 'add-to-home-screen-rails'
21
+ end
22
+ ```
23
+
24
+ You can include it by adding the following to your javascript file:
25
+
26
+ ```javascript
27
+ //= require add2home
28
+ ```
29
+
30
+ And to the css file:
31
+
32
+ ```css
33
+ /*
34
+ *= require add2home
35
+ */
36
+ ```
@@ -0,0 +1 @@
1
+ require "bundler/gem_tasks"
@@ -0,0 +1,19 @@
1
+ # -*- encoding: utf-8 -*-
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'add-to-homescreen-rails/version'
5
+
6
+ Gem::Specification.new do |gem|
7
+ gem.name = "add-to-homescreen-rails"
8
+ gem.version = Add::To::Homescreen::Rails::VERSION
9
+ gem.authors = ["RogerE"]
10
+ gem.email = ["roger@webfokus.no"]
11
+ gem.description = "Provides the 'Add to Home screen' assets for your Rails application."
12
+ gem.summary = "Use 'Add to Home screen' with Rails Asset Pipeline"
13
+ gem.homepage = "https://github.com/RogerE/add-to-homescreen-rails"
14
+
15
+ gem.files = `git ls-files`.split($/)
16
+ gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
17
+ gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
18
+ gem.require_paths = ["lib"]
19
+ end
@@ -0,0 +1,11 @@
1
+ require "add-to-homescreen-rails/version"
2
+
3
+ module Add
4
+ module To
5
+ module Homescreen
6
+ module Rails
7
+ # Your code goes here...
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,9 @@
1
+ module Add
2
+ module To
3
+ module Homescreen
4
+ module Rails
5
+ VERSION = "2.0"
6
+ end
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,337 @@
1
+ /*!
2
+ * Add to Homescreen v2.0 ~ Copyright (c) 2012 Matteo Spinelli, http://cubiq.org
3
+ * Released under MIT license, http://cubiq.org/license
4
+ */
5
+ var addToHome = (function (w) {
6
+ var nav = w.navigator,
7
+ isIDevice = 'platform' in nav && (/iphone|ipod|ipad/gi).test(nav.platform),
8
+ isIPad,
9
+ isRetina,
10
+ isSafari,
11
+ isStandalone,
12
+ OSVersion,
13
+ startX = 0,
14
+ startY = 0,
15
+ isExpired,
16
+ isSessionActive,
17
+ isReturningVisitor,
18
+ balloon,
19
+ overrideChecks,
20
+
21
+ positionInterval,
22
+ closeTimeout,
23
+
24
+ options = {
25
+ autostart: true, // Automatically open the balloon
26
+ returningVisitor: false, // Show the balloon to returning visitors only (setting this to true is HIGHLY RECCOMENDED)
27
+ animationIn: 'drop', // drop || bubble || fade
28
+ animationOut: 'fade', // drop || bubble || fade
29
+ startDelay: 2000, // 2 seconds from page load before the balloon appears
30
+ lifespan: 15000, // 15 seconds before it is automatically destroyed
31
+ bottomOffset: 14, // Distance of the balloon from bottom
32
+ expire: 0, // Minutes to wait before showing the popup again (0 = always displayed)
33
+ message: '', // Customize your message or force a language ('' = automatic)
34
+ touchIcon: false, // Display the touch icon
35
+ arrow: true, // Display the balloon arrow
36
+ hookOnLoad: true, // Should we hook to onload event? (really advanced usage)
37
+ iterations: 100 // Internal/debug use
38
+ },
39
+
40
+ intl = {
41
+ ca_es: 'Per instal·lar aquesta aplicació al vostre %device premeu %icon i llavors <strong>Afegir a pantalla d\'inici</strong>.',
42
+ da_dk: 'Tilføj denne side til din %device: tryk på %icon og derefter <strong>Tilføj til hjemmeskærm</strong>.',
43
+ de_de: 'Installieren Sie diese App auf Ihrem %device: %icon antippen und dann <strong>Zum Home-Bildschirm</strong>.',
44
+ el_gr: 'Εγκαταστήσετε αυτήν την Εφαρμογή στήν συσκευή σας %device: %icon μετά πατάτε <strong>Προσθήκη σε Αφετηρία</strong>.',
45
+ en_us: 'Install this web app on your %device: tap %icon and then <strong>Add to Home Screen</strong>.',
46
+ es_es: 'Para instalar esta app en su %device, pulse %icon y seleccione <strong>Añadir a pantalla de inicio</strong>.',
47
+ fi_fi: 'Asenna tämä web-sovellus laitteeseesi %device: paina %icon ja sen jälkeen valitse <strong>Lisää Koti-valikkoon</strong>.',
48
+ fr_fr: 'Ajoutez cette application sur votre %device en cliquant sur %icon, puis <strong>Ajouter à l\'écran d\'accueil</strong>.',
49
+ he_il: '<span dir="rtl">התקן אפליקציה זו על ה-%device שלך: הקש %icon ואז <strong>הוסף למסך הבית</strong>.</span>',
50
+ hu_hu: 'Telepítse ezt a web-alkalmazást az Ön %device-jára: nyomjon a %icon-ra majd a <strong>Főképernyőhöz adás</strong> gombra.',
51
+ it_it: 'Installa questa applicazione sul tuo %device: premi su %icon e poi <strong>Aggiungi a Home</strong>.',
52
+ ja_jp: 'このウェブアプリをあなたの%deviceにインストールするには%iconをタップして<strong>ホーム画面に追加</strong>を選んでください。',
53
+ ko_kr: '%device에 웹앱을 설치하려면 %icon을 터치 후 "홈화면에 추가"를 선택하세요',
54
+ nb_no: 'Installer denne appen på din %device: trykk på %icon og deretter <strong>Legg til på Hjem-skjerm</strong>',
55
+ nl_nl: 'Installeer deze webapp op uw %device: tik %icon en dan <strong>Zet in beginscherm</strong>.',
56
+ pl_pl: 'Aby zainstalować tę aplikacje na %device: naciśnij %icon a następnie <strong>Dodaj jako ikonę</strong>.',
57
+ pt_br: 'Instale este web app em seu %device: aperte %icon e selecione <strong>Adicionar à Tela Inicio</strong>.',
58
+ pt_pt: 'Para instalar esta aplicação no seu %device, prima o %icon e depois o <strong>Adicionar ao ecrã principal</strong>.',
59
+ ru_ru: 'Установите это веб-приложение на ваш %device: нажмите %icon, затем <strong>Добавить в «Домой»</strong>.',
60
+ sv_se: 'Lägg till denna webbapplikation på din %device: tryck på %icon och därefter <strong>Lägg till på hemskärmen</strong>.',
61
+ th_th: 'ติดตั้งเว็บแอพฯ นี้บน %device ของคุณ: แตะ %icon และ <strong>เพิ่มที่หน้าจอโฮม</strong>',
62
+ tr_tr: '%device için bu uygulamayı kurduktan sonra %icon simgesine dokunarak <strong>Ev Ekranına Ekle</strong>yin.',
63
+ zh_cn: '您可以将此应用程式安装到您的 %device 上。请按 %icon 然后点选<strong>添加至主屏幕</strong>。',
64
+ zh_tw: '您可以將此應用程式安裝到您的 %device 上。請按 %icon 然後點選<strong>加入主畫面螢幕</strong>。'
65
+ };
66
+
67
+ function init () {
68
+ // Preliminary check, prevents all further checks to be performed on iDevices only
69
+ if ( !isIDevice ) return;
70
+
71
+ var now = Date.now();
72
+
73
+ // Merge local with global options
74
+ if (w.addToHomeConfig) {
75
+ for ( var i in w.addToHomeConfig ) {
76
+ options[i] = w.addToHomeConfig[i];
77
+ }
78
+ }
79
+ if ( !options.autostart ) options.hookOnLoad = false;
80
+
81
+ isIPad = (/ipad/gi).test(nav.platform);
82
+ isRetina = w.devicePixelRatio && w.devicePixelRatio > 1;
83
+ isSafari = nav.appVersion.match(/Safari/gi);
84
+ isStandalone = nav.standalone;
85
+
86
+ OSVersion = nav.appVersion.match(/OS (\d+_\d+)/i);
87
+ OSVersion = OSVersion[1] ? +OSVersion[1].replace('_', '.') : 0;
88
+
89
+ isExpired = +w.localStorage.getItem('addToHome') || now;
90
+ isSessionActive = w.sessionStorage.getItem('addToHomeSession');
91
+ isReturningVisitor = !options.returningVisitor || ( isExpired && isExpired + 28*24*60*60*1000 > now ); // You are considered a "returning visitor" if you access the site more than once/month
92
+
93
+ // If it is expired we need to reissue a new balloon
94
+ isExpired = ( !options.expire || isExpired <= now );
95
+
96
+ if ( options.hookOnLoad ) w.addEventListener('load', loaded, false);
97
+ else if ( !options.hookOnLoad && options.autostart ) loaded();
98
+ }
99
+
100
+ function loaded () {
101
+ w.removeEventListener('load', loaded, false);
102
+
103
+ if ( !overrideChecks && (!isSafari || !isExpired || isSessionActive || isStandalone || !isReturningVisitor) ) return;
104
+
105
+ if ( options.expire || options.returningVisitor ) {
106
+ w.localStorage.setItem('addToHome', Date.now() + options.expire * 60000);
107
+ }
108
+
109
+ var icons = options.touchIcon ? document.querySelectorAll('head link[rel=apple-touch-icon],head link[rel=apple-touch-icon-precomposed]') : [],
110
+ sizes,
111
+ touchIcon = '',
112
+ closeButton,
113
+ platform = nav.platform.split(' ')[0],
114
+ language = nav.language.replace('-', '_'),
115
+ i, l;
116
+
117
+ balloon = document.createElement('div');
118
+ balloon.id = 'addToHomeScreen';
119
+ balloon.style.cssText += 'left:-9999px;-webkit-transition-property:-webkit-transform,opacity;-webkit-transition-duration:0;-webkit-transform:translate3d(0,0,0);position:' + (OSVersion < 5 ? 'absolute' : 'fixed');
120
+
121
+ // Localize message
122
+ if ( options.message in intl ) { // You may force a language despite the user's locale
123
+ language = options.message;
124
+ options.message = '';
125
+ }
126
+ if ( options.message === '' ) { // We look for a suitable language (defaulted to en_us)
127
+ options.message = language in intl ? intl[language] : intl['en_us'];
128
+ }
129
+
130
+ // Search for the apple-touch-icon
131
+ if ( icons.length ) {
132
+ for ( i = 0, l = icons.length; i < l; i++ ) {
133
+ sizes = icons[i].getAttribute('sizes');
134
+
135
+ if ( sizes ) {
136
+ if ( isRetina && sizes == '114x114' ) {
137
+ touchIcon = icons[i].href;
138
+ break;
139
+ }
140
+ } else {
141
+ touchIcon = icons[i].href;
142
+ }
143
+ }
144
+
145
+ touchIcon = '<span style="background-image:url(' + touchIcon + ')" class="addToHomeTouchIcon"></span>';
146
+ }
147
+
148
+ balloon.className = (isIPad ? 'addToHomeIpad' : 'addToHomeIphone') + (touchIcon ? ' addToHomeWide' : '');
149
+ balloon.innerHTML = touchIcon +
150
+ options.message.replace('%device', platform).replace('%icon', OSVersion >= 4.2 ? '<span class="addToHomeShare"></span>' : '<span class="addToHomePlus">+</span>') +
151
+ (options.arrow ? '<span class="addToHomeArrow"></span>' : '') +
152
+ '<span class="addToHomeClose">\u00D7</span>';
153
+
154
+ document.body.appendChild(balloon);
155
+
156
+ // Add the close action
157
+ closeButton = balloon.querySelector('.addToHomeClose');
158
+ if ( closeButton ) closeButton.addEventListener('click', clicked, false);
159
+
160
+ setTimeout(show, options.startDelay);
161
+ }
162
+
163
+ function show () {
164
+ var duration,
165
+ iPadXShift = 160;
166
+
167
+ // Set the initial position
168
+ if ( isIPad ) {
169
+ if ( OSVersion < 5 ) {
170
+ startY = w.scrollY;
171
+ startX = w.scrollX;
172
+ iPadXShift = 208;
173
+ }
174
+
175
+ balloon.style.top = startY + options.bottomOffset + 'px';
176
+ balloon.style.left = startX + iPadXShift - Math.round(balloon.offsetWidth / 2) + 'px';
177
+
178
+ switch ( options.animationIn ) {
179
+ case 'drop':
180
+ duration = '0.6s';
181
+ balloon.style.webkitTransform = 'translate3d(0,' + -(w.scrollY + options.bottomOffset + balloon.offsetHeight) + 'px,0)';
182
+ break;
183
+ case 'bubble':
184
+ duration = '0.6s';
185
+ balloon.style.opacity = '0';
186
+ balloon.style.webkitTransform = 'translate3d(0,' + (startY + 50) + 'px,0)';
187
+ break;
188
+ default:
189
+ duration = '1s';
190
+ balloon.style.opacity = '0';
191
+ }
192
+ } else {
193
+ startY = w.innerHeight + w.scrollY;
194
+
195
+ if ( OSVersion < 5 ) {
196
+ startX = Math.round((w.innerWidth - balloon.offsetWidth) / 2) + w.scrollX;
197
+ balloon.style.left = startX + 'px';
198
+ balloon.style.top = startY - balloon.offsetHeight - options.bottomOffset + 'px';
199
+ } else {
200
+ balloon.style.left = '50%';
201
+ balloon.style.marginLeft = -Math.round(balloon.offsetWidth / 2) + 'px';
202
+ balloon.style.bottom = options.bottomOffset + 'px';
203
+ }
204
+
205
+ switch (options.animationIn) {
206
+ case 'drop':
207
+ duration = '1s';
208
+ balloon.style.webkitTransform = 'translate3d(0,' + -(startY + options.bottomOffset) + 'px,0)';
209
+ break;
210
+ case 'bubble':
211
+ duration = '0.6s';
212
+ balloon.style.webkitTransform = 'translate3d(0,' + (balloon.offsetHeight + options.bottomOffset + 50) + 'px,0)';
213
+ break;
214
+ default:
215
+ duration = '1s';
216
+ balloon.style.opacity = '0';
217
+ }
218
+ }
219
+
220
+ balloon.offsetHeight; // repaint trick
221
+ balloon.style.webkitTransitionDuration = duration;
222
+ balloon.style.opacity = '1';
223
+ balloon.style.webkitTransform = 'translate3d(0,0,0)';
224
+ balloon.addEventListener('webkitTransitionEnd', transitionEnd, false);
225
+
226
+ closeTimeout = setTimeout(close, options.lifespan);
227
+ }
228
+
229
+ function manualShow (override) {
230
+ if ( !isIDevice || balloon ) return;
231
+
232
+ overrideChecks = override;
233
+ loaded();
234
+ }
235
+
236
+ function close () {
237
+ clearInterval( positionInterval );
238
+ clearTimeout( closeTimeout );
239
+ closeTimeout = null;
240
+
241
+ var posY = 0,
242
+ posX = 0,
243
+ opacity = '1',
244
+ duration = '0',
245
+ closeButton = balloon.querySelector('.addToHomeClose');
246
+
247
+ if ( closeButton ) closeButton.removeEventListener('click', close, false);
248
+
249
+ if ( OSVersion < 5 ) {
250
+ posY = isIPad ? w.scrollY - startY : w.scrollY + w.innerHeight - startY;
251
+ posX = isIPad ? w.scrollX - startX : w.scrollX + Math.round((w.innerWidth - balloon.offsetWidth)/2) - startX;
252
+ }
253
+
254
+ balloon.style.webkitTransitionProperty = '-webkit-transform,opacity';
255
+
256
+ switch ( options.animationOut ) {
257
+ case 'drop':
258
+ if ( isIPad ) {
259
+ duration = '0.4s';
260
+ opacity = '0';
261
+ posY = posY + 50;
262
+ } else {
263
+ duration = '0.6s';
264
+ posY = posY + balloon.offsetHeight + options.bottomOffset + 50;
265
+ }
266
+ break;
267
+ case 'bubble':
268
+ if ( isIPad ) {
269
+ duration = '0.8s';
270
+ posY = posY - balloon.offsetHeight - options.bottomOffset - 50;
271
+ } else {
272
+ duration = '0.4s';
273
+ opacity = '0';
274
+ posY = posY - 50;
275
+ }
276
+ break;
277
+ default:
278
+ duration = '0.8s';
279
+ opacity = '0';
280
+ }
281
+
282
+ balloon.addEventListener('webkitTransitionEnd', transitionEnd, false);
283
+ balloon.style.opacity = opacity;
284
+ balloon.style.webkitTransitionDuration = duration;
285
+ balloon.style.webkitTransform = 'translate3d(' + posX + 'px,' + posY + 'px,0)';
286
+ }
287
+
288
+
289
+ function clicked () {
290
+ w.sessionStorage.setItem('addToHomeSession', '1');
291
+ isSessionActive = true;
292
+ close();
293
+ }
294
+
295
+ function transitionEnd () {
296
+ balloon.removeEventListener('webkitTransitionEnd', transitionEnd, false);
297
+
298
+ balloon.style.webkitTransitionProperty = '-webkit-transform';
299
+ balloon.style.webkitTransitionDuration = '0.2s';
300
+
301
+ // We reached the end!
302
+ if ( !closeTimeout ) {
303
+ balloon.parentNode.removeChild(balloon);
304
+ balloon = null;
305
+ return;
306
+ }
307
+
308
+ // On iOS 4 we start checking the element position
309
+ if ( OSVersion < 5 && closeTimeout ) positionInterval = setInterval(setPosition, options.iterations);
310
+ }
311
+
312
+ function setPosition () {
313
+ var matrix = new WebKitCSSMatrix(w.getComputedStyle(balloon, null).webkitTransform),
314
+ posY = isIPad ? w.scrollY - startY : w.scrollY + w.innerHeight - startY,
315
+ posX = isIPad ? w.scrollX - startX : w.scrollX + Math.round((w.innerWidth - balloon.offsetWidth) / 2) - startX;
316
+
317
+ // Screen didn't move
318
+ if ( posY == matrix.m42 && posX == matrix.m41 ) return;
319
+
320
+ balloon.style.webkitTransform = 'translate3d(' + posX + 'px,' + posY + 'px,0)';
321
+ }
322
+
323
+ // Clear local and session storages (this is useful primarily in development)
324
+ function reset () {
325
+ w.localStorage.removeItem('addToHome');
326
+ w.sessionStorage.removeItem('addToHomeSession');
327
+ }
328
+
329
+ // Bootstrap!
330
+ init();
331
+
332
+ return {
333
+ show: manualShow,
334
+ close: close,
335
+ reset: reset
336
+ };
337
+ })(this);
@@ -0,0 +1,158 @@
1
+ /**
2
+ *
3
+ * Main container
4
+ *
5
+ */
6
+ #addToHomeScreen {
7
+ z-index:9999;
8
+ -webkit-user-select:none;
9
+ -webkit-box-sizing:border-box;
10
+ width:240px;
11
+ font-size:15px;
12
+ padding:12px 14px;
13
+ text-align:left;
14
+ font-family:helvetica;
15
+ background-image:-webkit-gradient(linear,0 0,0 100%,color-stop(0,#fff),color-stop(0.02,#eee),color-stop(0.98,#ccc),color-stop(1,#a3a3a3));
16
+ border:1px solid #505050;
17
+ -webkit-border-radius:8px;
18
+ -webkit-background-clip:padding-box;
19
+ color:#333;
20
+ text-shadow:0 1px 0 rgba(255,255,255,0.75);
21
+ line-height:130%;
22
+ -webkit-box-shadow:0 0 4px rgba(0,0,0,0.5);
23
+ }
24
+
25
+ #addToHomeScreen.addToHomeIpad {
26
+ width:268px;
27
+ font-size:18px;
28
+ padding:14px;
29
+ }
30
+
31
+ /**
32
+ *
33
+ * The 'wide' class is added when the popup contains the touch icon
34
+ *
35
+ */
36
+ #addToHomeScreen.addToHomeWide {
37
+ width:296px;
38
+ }
39
+
40
+ #addToHomeScreen.addToHomeIpad.addToHomeWide {
41
+ width:320px;
42
+ font-size:18px;
43
+ padding:14px;
44
+ }
45
+
46
+ /**
47
+ *
48
+ * The balloon arrow
49
+ *
50
+ */
51
+ #addToHomeScreen .addToHomeArrow {
52
+ position:absolute;
53
+ background-image:-webkit-gradient(linear,0 0,100% 100%,color-stop(0,rgba(204,204,204,0)),color-stop(0.4,rgba(204,204,204,0)),color-stop(0.4,#ccc));
54
+ border-width:0 1px 1px 0;
55
+ border-style:solid;
56
+ border-color:#505050;
57
+ width:16px; height:16px;
58
+ -webkit-transform:rotateZ(45deg);
59
+ bottom:-9px; left:50%;
60
+ margin-left:-8px;
61
+ -webkit-box-shadow:inset -1px -1px 0 #a9a9a9;
62
+ -webkit-border-bottom-right-radius:2px;
63
+ }
64
+
65
+
66
+ /**
67
+ *
68
+ * The balloon arrow for iPad
69
+ *
70
+ */
71
+ #addToHomeScreen.addToHomeIpad .addToHomeArrow {
72
+ -webkit-transform:rotateZ(-135deg);
73
+ background-image:-webkit-gradient(linear,0 0,100% 100%,color-stop(0,rgba(238,238,238,0)),color-stop(0.4,rgba(238,238,238,0)),color-stop(0.4,#eee));
74
+ -webkit-box-shadow:inset -1px -1px 0 #fff;
75
+ top:-9px; bottom:auto; left:50%;
76
+ }
77
+
78
+
79
+ /**
80
+ *
81
+ * Close button
82
+ *
83
+ */
84
+ #addToHomeScreen .addToHomeClose {
85
+ -webkit-box-sizing:border-box;
86
+ position:absolute;
87
+ right:4px;
88
+ top:4px;
89
+ width:18px;
90
+ height:18px; line-height:14px;
91
+ text-align:center;
92
+ text-indent:1px;
93
+ -webkit-border-radius:9px;
94
+ background:rgba(0,0,0,0.12);
95
+ color:#707070;
96
+ -webkit-box-shadow:0 1px 0 #fff;
97
+ font-size:16px;
98
+ }
99
+
100
+
101
+ /**
102
+ *
103
+ * The '+' icon, displayed only on iOS < 4.2
104
+ *
105
+ */
106
+ #addToHomeScreen .addToHomePlus {
107
+ font-weight:bold;
108
+ font-size:1.3em;
109
+ }
110
+
111
+
112
+ /**
113
+ *
114
+ * The 'share' icon, displayed only on iOS >= 4.2
115
+ *
116
+ */
117
+ #addToHomeScreen .addToHomeShare {
118
+ display:inline-block;
119
+ width:18px;
120
+ height:15px;
121
+ background-repeat:no-repeat;
122
+ background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAAPCAQAAABDj1eZAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAUdJREFUKFNtkLtLw1AYxS/qJLhXVKr2ZRulUNtiqgSb3CziICI6ucTFVYcOnaQOFRwUnNTRwUWXgpP/QdHNUEQUHGxofYBTlRs83iZNjKTncOGe7/vx3QchXUWn6FL3jhfKUdCCr5zuifV5oDiHQM+c+CIhiiCSWNu08iq9oHXKLAiqrgR4UXqlOEYZt++ExEL0wW7+OW0G10muLv9gmqfe5FAWKmTMYQYiFL7PYwyLOD8lSjNh2gdnPzMII4QUBxc4OothbAF7GCBKQ0YbSWyPQsIhqvetS+y0ygGMo/KFZfviDvR4AhwgZU9dGYnA0J/6ndc15i3ouYIMcVVUcEXIoOxCeRCfwP8sXBSdjtpUv/1QW+K16kCCIUC4id9Fa0JtkluwVkSfqPL6RwfSDA0aNlx7k/bWgViB7bMS2/1vk5sdsZLN/ALSuL3tylO4RAAAAABJRU5ErkJggg==);
123
+ background-size:18px 15px;
124
+ text-indent:-9999em;
125
+ overflow:hidden;
126
+ }
127
+
128
+
129
+ /**
130
+ *
131
+ * The touch icon (if available)
132
+ *
133
+ */
134
+ #addToHomeScreen .addToHomeTouchIcon {
135
+ display:block;
136
+ float:left;
137
+ -webkit-border-radius:6px;
138
+ -webkit-box-shadow:0 1px 3px rgba(0,0,0,0.5),
139
+ inset 0 0 2px rgba(255,255,255,0.9);
140
+ background-repeat:no-repeat;
141
+ width:57px; height:57px;
142
+ -webkit-background-size:57px 57px;
143
+ margin:0 12px 0 0;
144
+ border:1px solid #333;
145
+ -webkit-background-clip:padding-box;
146
+ }
147
+
148
+
149
+ /**
150
+ *
151
+ * The 'share' icon for retina display
152
+ *
153
+ */
154
+ @media all and (-webkit-min-device-pixel-ratio: 2) {
155
+ #addToHomeScreen .addToHomeShare {
156
+ background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAAAeCAQAAADu6HTYAAADPElEQVR4Xq3TX2gcRRzA8e/M7mVv2+TSNpc/TZtrY6jUGqgaSAmEChKLrYK0YH0RFC2CSCkEfCghiKU04J8qNigq6os+iQV98MHWFwVBrQQRWs21lBw5cw3NNb1/udu72RGG5Y77IzXW77D7sAwf5scyYoL6BGXSDKFZwaGpLvIUaeoCkvX1MmsM0Ny6oRSQYOLuIS+YZOpfQdqslpUxcZrzTVAz4qPwW2O3CeIwC/RSzeY6Ow1QhUrkr+YOWfEKDkEP8Rij7CHKJmrFSDHBdwGEE5wiGChPN+PnT8VdRtEIl1d4gRj/1EVe5ZSBKGh8iqQpo/Fo5+3C/gz0MYg4zgwbqday1/Q4B8BGQ45d/Hi54lakCrU5obOcidJpu1+Lg9whjabyaOYLnrIBFFaRD+xe2ybMDWY66GmP/WA9cGfGp0CWhy0wkMN8inepFiH2rV1j0NQSNQbFLRQnS8/8YSDBBpadfv4CYDub2fmeHDNAsL1MBWUel0iA+Xik6eHcyvD3vAMSU1TGuA/YRS+dD7ovCQN43GKRFCU20Kd3V/avDVVyAZ5niTEuLA5/zBGWg9EEEhfJKN200Tat8CmRAQb9+wv7soPlHt2tQorsz1uPbr0HTY4sJwrH47zJZwABBAKLMBoQXepwgTwdHCo+fXMkQ4lrxEmQ5AaXipPqDY9V2vn09tgvTPI71EEGYxM+/uMJLJ4svpgaWGKOi/xKgmqLSUGSUd5f2vIVJ/CgBaTIUsZ7ZBsn0+NzfMOXLFCXQyTcybN6ep5ZZgUOHn7jpfUpsZshdugPGf+E5zjbyHTSRyQ8xfRPPM/s63RHeuknSoT22mjmmnAOIMkUZ6D1xSfPPAfd1WFKM3sO2CMaHx8M1NjnXKHaAGGkOW0C02WeYHUz4qMtx+w5gUDS8NckYe5lHsMYwCZEPyEEmjLDZFmAS7CDviMdxyTkMNVBKEmYLvbiQQBIBBbCQG04bGQvFWz6CfsCQLWCigILFwcfkGYBiOpbYuOizTAyYyDdCtrGaRG1LCkIgMYEFhI0WqQZoSlbGRyHKe4qOx7iv2bVQW9dp4dlM/x6kmwnWQcd/Q3FCqwTEiT5s+6D5v/pb0SSHyg7uhMWAAAAAElFTkSuQmCC);
157
+ }
158
+ }
metadata ADDED
@@ -0,0 +1,55 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: add-to-homescreen-rails
3
+ version: !ruby/object:Gem::Version
4
+ version: '2.0'
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - RogerE
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-10-20 00:00:00.000000000 Z
13
+ dependencies: []
14
+ description: Provides the 'Add to Home screen' assets for your Rails application.
15
+ email:
16
+ - roger@webfokus.no
17
+ executables: []
18
+ extensions: []
19
+ extra_rdoc_files: []
20
+ files:
21
+ - .gitignore
22
+ - Gemfile
23
+ - LICENSE.txt
24
+ - README.md
25
+ - Rakefile
26
+ - add-to-homescreen-rails.gemspec
27
+ - lib/add-to-homescreen-rails.rb
28
+ - lib/add-to-homescreen-rails/version.rb
29
+ - vendor/assets/javascripts/add2home.js
30
+ - vendor/assets/stylesheets/add2home.css
31
+ homepage: https://github.com/RogerE/add-to-homescreen-rails
32
+ licenses: []
33
+ post_install_message:
34
+ rdoc_options: []
35
+ require_paths:
36
+ - lib
37
+ required_ruby_version: !ruby/object:Gem::Requirement
38
+ none: false
39
+ requirements:
40
+ - - ! '>='
41
+ - !ruby/object:Gem::Version
42
+ version: '0'
43
+ required_rubygems_version: !ruby/object:Gem::Requirement
44
+ none: false
45
+ requirements:
46
+ - - ! '>='
47
+ - !ruby/object:Gem::Version
48
+ version: '0'
49
+ requirements: []
50
+ rubyforge_project:
51
+ rubygems_version: 1.8.24
52
+ signing_key:
53
+ specification_version: 3
54
+ summary: Use 'Add to Home screen' with Rails Asset Pipeline
55
+ test_files: []