rails-env-favicon 0.0.3 → 0.0.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +10 -0
- data/app/assets/javascripts/grayscale-favicon.js +143 -0
- data/app/assets/javascripts/rails_env_favicon.js.erb +14 -10
- data/config/initializers/rails_env_favicon.rb +3 -0
- data/doc/img/sample-grayscale.png +0 -0
- data/lib/rails-env-favicon.rb +3 -0
- data/lib/rails-env-favicon/version.rb +1 -1
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 360876ef2a17013757041f0c08850c43c7cd5a46
|
4
|
+
data.tar.gz: 061d6dbb8015cfc604289a955dc2bb9e07febf66
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7ee020c8021c9d3d5d3980f9db9f5fa123c7abdfa6a5aa1faa904e70e106a8135adb5940f26659c21ad573c1f2dcddb0c947b1a0d2ffadbb6d159eb498acfde9
|
7
|
+
data.tar.gz: 122b036f8bacbd22753edc1193773bb562bd3ebcc2839290056e700168f942436ec1fa8d0108c97fe523301bb2f8b84b337b8efbda4506fc9505711b4c7ff317
|
data/README.md
CHANGED
@@ -15,6 +15,12 @@ This means that on the first tab we have development environment, on second stag
|
|
15
15
|
|
16
16
|
It uses [Tinycon](https://github.com/tommoor/tinycon) - A small library for manipulating the favicon.
|
17
17
|
|
18
|
+
And one more option:
|
19
|
+
|
20
|
+
![ScreenShot](https://raw.github.com/accessd/rails-env-favicon/master/doc/img/sample-grayscale.png)
|
21
|
+
|
22
|
+
Icon will be gray on non production environment.
|
23
|
+
|
18
24
|
Installation
|
19
25
|
------------
|
20
26
|
|
@@ -41,10 +47,14 @@ Config
|
|
41
47
|
In config/initializers/rails_env_favicon.rb
|
42
48
|
|
43
49
|
RailsEnvFavicon.setup do |config|
|
50
|
+
# If true then favicon will be gray on non production env
|
51
|
+
config.make_grayscale = false
|
52
|
+
# or if make_grayscale = false then draw badge on favicon with this options:
|
44
53
|
config.text_color = '#ffffff'
|
45
54
|
config.background_color = '#549a2f'
|
46
55
|
end
|
47
56
|
|
57
|
+
|
48
58
|
Contributing
|
49
59
|
-------------
|
50
60
|
|
@@ -0,0 +1,143 @@
|
|
1
|
+
/*!
|
2
|
+
* GrayscaleFavicon - A small library for make the Favicon grayscale
|
3
|
+
* Accessd, https://github.com/accessd
|
4
|
+
* Copyright (c) 2014 Accessd
|
5
|
+
* @license MIT Licensed
|
6
|
+
* @version 0.0.1
|
7
|
+
*/
|
8
|
+
|
9
|
+
(function(){
|
10
|
+
|
11
|
+
var GrayscaleFavicon = {};
|
12
|
+
var currentFavicon = null;
|
13
|
+
var originalFavicon = null;
|
14
|
+
var faviconImage = null;
|
15
|
+
var canvas = null;
|
16
|
+
var size = 32;
|
17
|
+
|
18
|
+
// private methods
|
19
|
+
var getFaviconTag = function(){
|
20
|
+
|
21
|
+
var links = document.getElementsByTagName('link');
|
22
|
+
|
23
|
+
for(var i=0, len=links.length; i < len; i++) {
|
24
|
+
if ((links[i].getAttribute('rel') || '').match(/\bicon\b/)) {
|
25
|
+
return links[i];
|
26
|
+
}
|
27
|
+
}
|
28
|
+
|
29
|
+
return false;
|
30
|
+
};
|
31
|
+
|
32
|
+
var removeFaviconTag = function(){
|
33
|
+
|
34
|
+
var links = document.getElementsByTagName('link');
|
35
|
+
var head = document.getElementsByTagName('head')[0];
|
36
|
+
|
37
|
+
for(var i=0, len=links.length; i < len; i++) {
|
38
|
+
var exists = (typeof(links[i]) !== 'undefined');
|
39
|
+
if (exists && (links[i].getAttribute('rel') || '').match(/\bicon\b/)) {
|
40
|
+
head.removeChild(links[i]);
|
41
|
+
}
|
42
|
+
}
|
43
|
+
};
|
44
|
+
|
45
|
+
var getCurrentFavicon = function(){
|
46
|
+
|
47
|
+
if (!originalFavicon || !currentFavicon) {
|
48
|
+
var tag = getFaviconTag();
|
49
|
+
originalFavicon = currentFavicon = tag ? tag.getAttribute('href') : './favicon.ico';
|
50
|
+
}
|
51
|
+
|
52
|
+
return currentFavicon;
|
53
|
+
};
|
54
|
+
|
55
|
+
var getCanvas = function (){
|
56
|
+
|
57
|
+
if (!canvas) {
|
58
|
+
canvas = document.createElement("canvas");
|
59
|
+
canvas.width = size;
|
60
|
+
canvas.height = size;
|
61
|
+
}
|
62
|
+
|
63
|
+
return canvas;
|
64
|
+
};
|
65
|
+
|
66
|
+
var setFaviconTag = function(url){
|
67
|
+
removeFaviconTag();
|
68
|
+
|
69
|
+
var link = document.createElement('link');
|
70
|
+
link.type = 'image/x-icon';
|
71
|
+
link.rel = 'icon';
|
72
|
+
link.href = url;
|
73
|
+
document.getElementsByTagName('head')[0].appendChild(link);
|
74
|
+
};
|
75
|
+
|
76
|
+
var log = function(message){
|
77
|
+
if (window.console) window.console.log(message);
|
78
|
+
};
|
79
|
+
|
80
|
+
var drawFavicon = function(label, colour) {
|
81
|
+
|
82
|
+
var context = getCanvas().getContext("2d");
|
83
|
+
var colour = colour || '#000000';
|
84
|
+
var src = getCurrentFavicon();
|
85
|
+
|
86
|
+
faviconImage = document.createElement('img');
|
87
|
+
faviconImage.onload = function() {
|
88
|
+
|
89
|
+
// clear canvas
|
90
|
+
context.clearRect(0, 0, size, size);
|
91
|
+
|
92
|
+
// draw the favicon
|
93
|
+
context.drawImage(faviconImage, 0, 0, faviconImage.width, faviconImage.height, 0, 0, size, size);
|
94
|
+
|
95
|
+
var imgPixels = context.getImageData(0, 0, faviconImage.width, faviconImage.height);
|
96
|
+
|
97
|
+
for(var y = 0; y < imgPixels.height; y++){
|
98
|
+
for(var x = 0; x < imgPixels.width; x++){
|
99
|
+
var i = (y * 4) * imgPixels.width + x * 4;
|
100
|
+
var avg = (imgPixels.data[i] + imgPixels.data[i + 1] + imgPixels.data[i + 2]) / 3;
|
101
|
+
imgPixels.data[i] = avg;
|
102
|
+
imgPixels.data[i + 1] = avg;
|
103
|
+
imgPixels.data[i + 2] = avg;
|
104
|
+
}
|
105
|
+
}
|
106
|
+
context.putImageData(imgPixels, 0, 0, 0, 0, imgPixels.width, imgPixels.height);
|
107
|
+
|
108
|
+
// refresh tag in page
|
109
|
+
refreshFavicon();
|
110
|
+
};
|
111
|
+
|
112
|
+
// allow cross origin resource requests if the image is not a data:uri
|
113
|
+
// as detailed here: https://github.com/mrdoob/three.js/issues/1305
|
114
|
+
if (!src.match(/^data/)) {
|
115
|
+
faviconImage.crossOrigin = 'anonymous';
|
116
|
+
}
|
117
|
+
|
118
|
+
faviconImage.src = src;
|
119
|
+
};
|
120
|
+
|
121
|
+
var refreshFavicon = function(){
|
122
|
+
// check support
|
123
|
+
if (!getCanvas().getContext) return;
|
124
|
+
|
125
|
+
setFaviconTag(getCanvas().toDataURL());
|
126
|
+
};
|
127
|
+
|
128
|
+
GrayscaleFavicon.grayscale = function(){
|
129
|
+
drawFavicon();
|
130
|
+
return this;
|
131
|
+
};
|
132
|
+
|
133
|
+
GrayscaleFavicon.reset = function(){
|
134
|
+
setFaviconTag(originalFavicon);
|
135
|
+
};
|
136
|
+
|
137
|
+
window.GrayscaleFavicon = GrayscaleFavicon;
|
138
|
+
|
139
|
+
if(typeof define === 'function' && define.amd) {
|
140
|
+
define(GrayscaleFavicon);
|
141
|
+
}
|
142
|
+
|
143
|
+
})();
|
@@ -1,13 +1,17 @@
|
|
1
1
|
<% unless Rails.env.production? %>
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
2
|
+
<% if RailsEnvFavicon.make_grayscale %>
|
3
|
+
<%= require_asset "grayscale-favicon.js" %>
|
4
|
+
GrayscaleFavicon.grayscale();
|
5
|
+
<% else %>
|
6
|
+
<%= require_asset "tinycon.min.js" %>
|
7
|
+
Tinycon.setOptions({
|
8
|
+
width: 8,
|
9
|
+
height: 9,
|
10
|
+
colour: '<%= RailsEnvFavicon.text_color %>',
|
11
|
+
background: '<%= RailsEnvFavicon.background_color %>',
|
12
|
+
fallback: true
|
13
|
+
});
|
11
14
|
|
12
|
-
|
15
|
+
Tinycon.setBubble("<%= RailsEnvFavicon.env_letter %>");
|
16
|
+
<% end %>
|
13
17
|
<% end %>
|
@@ -1,6 +1,9 @@
|
|
1
1
|
require 'rails-env-favicon'
|
2
2
|
|
3
3
|
RailsEnvFavicon.setup do |config|
|
4
|
+
# If true then favicon will be gray on non production env
|
5
|
+
config.make_grayscale = false
|
6
|
+
# or if make_grayscale = false then draw badge on favicon with this options:
|
4
7
|
config.text_color = '#ffffff'
|
5
8
|
config.background_color = '#549a2f'
|
6
9
|
end
|
Binary file
|
data/lib/rails-env-favicon.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rails-env-favicon
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Accessd
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-06-
|
11
|
+
date: 2014-06-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: railties
|
@@ -78,8 +78,10 @@ files:
|
|
78
78
|
- LICENSE.txt
|
79
79
|
- README.md
|
80
80
|
- Rakefile
|
81
|
+
- app/assets/javascripts/grayscale-favicon.js
|
81
82
|
- app/assets/javascripts/rails_env_favicon.js.erb
|
82
83
|
- config/initializers/rails_env_favicon.rb
|
84
|
+
- doc/img/sample-grayscale.png
|
83
85
|
- doc/img/sample.png
|
84
86
|
- lib/generators/rails_env_favicon/install_generator.rb
|
85
87
|
- lib/rails-env-favicon.rb
|