social_linker 0.3.2 → 0.3.3
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 +26 -0
- data/app/assets/stylesheets/social_linker/icons.scss +54 -0
- data/app/helpers/view_helpers.rb +11 -5
- data/lib/social_linker/subject.rb +14 -3
- data/lib/social_linker/version.rb +1 -1
- metadata +2 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 288dc63f2019995af9cc826b611f6833f38b4e2a
|
4
|
+
data.tar.gz: 929cb7b9986b851dc5474e51231b24a718c22075
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8e0a9bd53da2b2b39ee8f23fd916919eadaab9d470def0b807278f27335f639693c0efee9d52ebbe893bdce9895b3a1f678923c48f6f5f54553596540083e914
|
7
|
+
data.tar.gz: 0d45542309ab9e6a830dfdd7b8f6653801a01c9b0fb608215daee1e8ba64bd259f29958772ea536efda50a8f9ce5c8eb5eb509a64da7346f052e7282dfadb594
|
data/README.md
CHANGED
@@ -126,6 +126,32 @@ the following line to the head of your application.ccs file:
|
|
126
126
|
|
127
127
|
*= require social_linker/icons
|
128
128
|
|
129
|
+
#### Reuse the SVG icons elsewhere
|
130
|
+
|
131
|
+
When integrating social icons into your site, you might also want to include login options
|
132
|
+
for these social networks, or access the icons for other reasons. Below is 'standard'
|
133
|
+
example code of how to access image-assets in the icon
|
134
|
+
|
135
|
+
<svg class="icon icon-facebook-official">
|
136
|
+
<use xlink:href="<%=image_path('social_linker/icons.svg')%>#icon-facebook"></use>
|
137
|
+
</svg>
|
138
|
+
|
139
|
+
Included layers:
|
140
|
+
|
141
|
+
* icon-email
|
142
|
+
* icon-google
|
143
|
+
* icon-sticky-note-o
|
144
|
+
* icon-share-square-o
|
145
|
+
* icon-search
|
146
|
+
* icon-heart-o
|
147
|
+
* icon-heart
|
148
|
+
* icon-twitter
|
149
|
+
* icon-pinterest
|
150
|
+
* icon-facebook
|
151
|
+
* icon-linkedin
|
152
|
+
* icon-whatsapp
|
153
|
+
* icon-tumblr
|
154
|
+
|
129
155
|
#### Tip: SVG4Everyone
|
130
156
|
|
131
157
|
When using SVG and serving your pages to older browsers, make sure you use something
|
@@ -1,3 +1,8 @@
|
|
1
|
+
$google-color: #E0492F;
|
2
|
+
$facebook-color: #395697;
|
3
|
+
$linkedin-color: #0077B5;
|
4
|
+
$twitter-color: #1DA1F2;
|
5
|
+
|
1
6
|
.icon {
|
2
7
|
display: inline-block;
|
3
8
|
width: 1em;
|
@@ -34,6 +39,9 @@ Example showing how to change the color/size of the icons:
|
|
34
39
|
|
35
40
|
.icon-twitter {
|
36
41
|
width: 0.9287109375em;
|
42
|
+
.colored {
|
43
|
+
color: $twitter-color;
|
44
|
+
}
|
37
45
|
}
|
38
46
|
|
39
47
|
.icon-pinterest {
|
@@ -42,17 +50,63 @@ Example showing how to change the color/size of the icons:
|
|
42
50
|
|
43
51
|
.icon-facebook {
|
44
52
|
width: 0.857421875em;
|
53
|
+
.colored {
|
54
|
+
color: $facebook-color;
|
55
|
+
}
|
45
56
|
}
|
46
57
|
|
47
58
|
.icon-google {
|
48
59
|
width: 0.83984375em;
|
60
|
+
.colored {
|
61
|
+
color: $google-color;
|
62
|
+
}
|
49
63
|
}
|
50
64
|
.icon-linkedin {
|
51
65
|
width: 0.857421875em;
|
66
|
+
.colored {
|
67
|
+
color: $linkedin-color;
|
68
|
+
}
|
52
69
|
}
|
53
70
|
.icon-whatsapp {
|
54
71
|
width: 0.857421875em;
|
55
72
|
}
|
56
73
|
.icon-tumblr {
|
57
74
|
width: 0.609375em;
|
75
|
+
|
76
|
+
}
|
77
|
+
|
78
|
+
// Foundation/Bootstrap styles
|
79
|
+
.btn, .button {
|
80
|
+
svg.icon {
|
81
|
+
float: left;
|
82
|
+
font-size: 1.15em;
|
83
|
+
}
|
84
|
+
&.google {
|
85
|
+
background-color: $google-color;
|
86
|
+
color: #fff;
|
87
|
+
&:hover {
|
88
|
+
background-color: darken($google-color,10);
|
89
|
+
}
|
90
|
+
}
|
91
|
+
&.facebook {
|
92
|
+
background-color: $facebook-color;
|
93
|
+
color: #fff;
|
94
|
+
&:hover {
|
95
|
+
background-color: darken($facebook-color,10);
|
96
|
+
}
|
97
|
+
}
|
98
|
+
&.twitter {
|
99
|
+
background-color: $twitter-color;
|
100
|
+
color: #fff;
|
101
|
+
&:hover {
|
102
|
+
background-color: darken($twitter-color,10);
|
103
|
+
}
|
104
|
+
}
|
105
|
+
&.linkedin {
|
106
|
+
background-color: $linkedin-color;
|
107
|
+
color: #fff;
|
108
|
+
&:hover {
|
109
|
+
background-color: darken($linkedin-color,10);
|
110
|
+
}
|
111
|
+
}
|
58
112
|
}
|
data/app/helpers/view_helpers.rb
CHANGED
@@ -4,8 +4,10 @@ module ViewHelpers
|
|
4
4
|
# param [String, Symbol] content (the value for the name or the property)
|
5
5
|
# @returns [String, nil] nil is returned when the content is empty
|
6
6
|
def meta_tag(name, content)
|
7
|
-
|
8
|
-
|
7
|
+
content = erb_sanitized(content)
|
8
|
+
name = erb_sanitized(name)
|
9
|
+
name_or_property_attribute = (name.start_with?("og:") or name.start_with?("fb:")) ? "property" : "name"
|
10
|
+
"<meta #{name_or_property_attribute}=\"#{name}\" content=\"#{content}\" />" if content and content.to_s.strip != ""
|
9
11
|
end
|
10
12
|
|
11
13
|
def erb_sanitized(value)
|
@@ -43,6 +45,8 @@ module ViewHelpers
|
|
43
45
|
header_html << meta_tag("twitter:description", subject.summary(true))
|
44
46
|
header_html << meta_tag("og:description", subject.summary(true))
|
45
47
|
|
48
|
+
header_html << meta_tag("fb:app_id", subject.options[:facebook_app_id])
|
49
|
+
|
46
50
|
if subject.media
|
47
51
|
header_html << meta_tag("twitter:image:src", subject.media)
|
48
52
|
header_html << meta_tag("og:image", subject.media)
|
@@ -56,6 +60,7 @@ module ViewHelpers
|
|
56
60
|
header_html << "<title>#{erb_sanitized(site_title)}</title>"
|
57
61
|
header_html << meta_tag("twitter:title", title)
|
58
62
|
header_html << meta_tag("og:title", title)
|
63
|
+
header_html << meta_tag("og:site_name", site_title_postfix)
|
59
64
|
|
60
65
|
header_html.compact!
|
61
66
|
header_html = header_html.join("\n") if header_html
|
@@ -82,7 +87,8 @@ module ViewHelpers
|
|
82
87
|
raise ArgumentError, "network can't be nil" unless network
|
83
88
|
options_with_defaults = {
|
84
89
|
social_icons_image_path: 'social_linker/icons.svg',
|
85
|
-
title: network.to_s.capitalize
|
90
|
+
title: network.to_s.capitalize,
|
91
|
+
target_blank: true
|
86
92
|
}.merge(options)
|
87
93
|
|
88
94
|
link_content = network
|
@@ -97,8 +103,8 @@ module ViewHelpers
|
|
97
103
|
end
|
98
104
|
|
99
105
|
title = options_with_defaults[:title]
|
100
|
-
|
101
|
-
html = "<a href=\"#{erb_sanitized(subject.share_link(network))}\" class=\"#{network}\" title=\"#{title}\">#{link_content}</a>"
|
106
|
+
targetblank = options_with_defaults[:target_blank] ? " target=\"_blank\"" : ""
|
107
|
+
html = "<a href=\"#{erb_sanitized(subject.share_link(network))}\"#{targetblank} class=\"#{network}\" title=\"#{title}\">#{link_content}</a>"
|
102
108
|
html = html.html_safe if html.methods.include?(:html_safe)
|
103
109
|
html
|
104
110
|
end
|
@@ -75,6 +75,10 @@ module SocialLinker
|
|
75
75
|
@options[:url]
|
76
76
|
end
|
77
77
|
|
78
|
+
def image_url
|
79
|
+
@options[:image_url]
|
80
|
+
end
|
81
|
+
|
78
82
|
def utm_parameters
|
79
83
|
[nil, true].include?(@options[:utm_parameters]) ? true : false
|
80
84
|
end
|
@@ -140,6 +144,9 @@ module SocialLinker
|
|
140
144
|
# * url
|
141
145
|
# * title
|
142
146
|
# * image_url & image_type(image/jpeg, image/png)
|
147
|
+
# * description
|
148
|
+
# * facebook_app_id
|
149
|
+
# * twitter_username
|
143
150
|
# * ... and more often medium specific attributes...
|
144
151
|
#
|
145
152
|
# Note by default tracking parameters are added, turn this off by passing
|
@@ -149,6 +156,7 @@ module SocialLinker
|
|
149
156
|
def initialize(options={})
|
150
157
|
# basic option syncing
|
151
158
|
@options = options
|
159
|
+
@options[:facebook_app_id] = @options[:facebook_app_id]
|
152
160
|
@options[:u] = @options[:url] unless options[:u]
|
153
161
|
@options[:media] = @options[:image_url] unless options[:media]
|
154
162
|
@options[:description] = @options[:summary] unless options[:description]
|
@@ -189,6 +197,12 @@ module SocialLinker
|
|
189
197
|
end
|
190
198
|
@options[:message] = [@options[:tweet_text],@options[:url],@options[:hash_string]].compact.join(" ") unless @options[:message]
|
191
199
|
@options[:status] = @options[:message] unless @options[:status]
|
200
|
+
|
201
|
+
# make sure urls are absolute
|
202
|
+
@options[:url] = prefix_domain(@options[:url],@options[:domain])
|
203
|
+
@options[:image_url] = prefix_domain(@options[:image_url],@options[:domain])
|
204
|
+
@options[:media] = prefix_domain(@options[:media],@options[:domain])
|
205
|
+
|
192
206
|
unless @options[:body]
|
193
207
|
@options[:body] = ""
|
194
208
|
@options[:body] += "#{@options[:summary]}\n" if @options[:summary]
|
@@ -199,9 +213,6 @@ module SocialLinker
|
|
199
213
|
@options[:body] = nil if @options[:body].strip == ""
|
200
214
|
end
|
201
215
|
|
202
|
-
@options[:image_url] = prefix_domain(@options[:image_url],@options[:domain])
|
203
|
-
@options[:media] = prefix_domain(@options[:media],@options[:domain])
|
204
|
-
|
205
216
|
@options.each do |k,v|
|
206
217
|
@options[k] = v.strip if v and v.is_a? String
|
207
218
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: social_linker
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- murb
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2017-01-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -106,4 +106,3 @@ specification_version: 4
|
|
106
106
|
summary: Social linker generates share-links for the different social networks from
|
107
107
|
a simple SocialLinker::Subject class
|
108
108
|
test_files: []
|
109
|
-
has_rdoc:
|