rails-env-favicon 0.0.3 → 0.0.4
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 +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
|
+

|
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
|