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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: f1918a28b4ed51533dee46b589aa6f7e690af35a
4
- data.tar.gz: 1c42969fd6aef0ab57a0094e4e61508749a255b0
3
+ metadata.gz: 360876ef2a17013757041f0c08850c43c7cd5a46
4
+ data.tar.gz: 061d6dbb8015cfc604289a955dc2bb9e07febf66
5
5
  SHA512:
6
- metadata.gz: 3cbf4ab69b3bf4508346662c68845ade2a61fadbf404f5bac7d4c3345ac775b6b5a73fc49e443ac2d9e1e732b0737648cefa82b62209ada141b3d3de572a7341
7
- data.tar.gz: 58969accc533706b41476b602f663343c1748aa77ed5f9d695bb09e67a0247e6c2fbffe4ae3ff286161e13c83cb83c47a01e0186d307ec151219ff0991817560
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
- <%= require_asset "tinycon.min.js" %>
3
- Tinycon.setOptions({
4
- width: 8,
5
- height: 9,
6
- font: '10px arial',
7
- colour: '<%= RailsEnvFavicon.text_color %>',
8
- background: '<%= RailsEnvFavicon.background_color %>',
9
- fallback: true
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
- Tinycon.setBubble("<%= RailsEnvFavicon.env_letter %>");
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
@@ -7,6 +7,9 @@ module RailsEnvFavicon
7
7
  mattr_accessor :background_color
8
8
  self.background_color = '#549a2f'
9
9
 
10
+ mattr_accessor :make_grayscale
11
+ self.make_grayscale = false
12
+
10
13
  def self.env_letter
11
14
  ::Rails.env.first.upcase
12
15
  end
@@ -1,3 +1,3 @@
1
1
  module RailsEnvFavicon
2
- VERSION = "0.0.3"
2
+ VERSION = "0.0.4"
3
3
  end
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.3
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-06 00:00:00.000000000 Z
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