spritz_for_jekyll 1.0.0 → 1.0.1
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/lib/login_success.html +24 -0
- data/lib/spritz_for_jekyll/commons/spritz.rb +98 -0
- data/lib/spritz_for_jekyll/commons/tags.rb +12 -0
- data/lib/spritz_for_jekyll/generator.rb +30 -0
- data/lib/spritz_for_jekyll/tags.rb +30 -0
- metadata +6 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2dfa0d39f5ff86f6b62d91ac3ce2d5a407c045ac
|
4
|
+
data.tar.gz: f7956d20f6398652f33a49c0e2c2e72c83798f06
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c699a6d1cbc27e36ffee393e2348e45d38eff25590edcd86debedde8f47205668cfc106bfed883d4053c8307dc153ed6ced3e5ed3b1068deef88b003f8fc45c5
|
7
|
+
data.tar.gz: f221e1e21732725af40646394fb34a14599baa92b4224e487cd0e711d48f8d01caeb4e8b91a52664d3d7384466a3b53f550acdb3d0895fc8f9ead2ae80bf4f10
|
@@ -0,0 +1,24 @@
|
|
1
|
+
<!doctype html>
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1" />
|
5
|
+
<title>Spritz Login Success</title>
|
6
|
+
</head>
|
7
|
+
<body>
|
8
|
+
<script type="text/javascript">
|
9
|
+
var hash=window.location.hash,origin=window.location.protocol+"//"+window.location.host;
|
10
|
+
if (typeof(localStorage)!=="undefined") {
|
11
|
+
try {
|
12
|
+
localStorage.setItem("spritz.authResponse",hash);
|
13
|
+
} catch(e) {
|
14
|
+
if(console) {
|
15
|
+
console.log(e,"Can\'t write to localStorage");
|
16
|
+
}
|
17
|
+
}
|
18
|
+
}
|
19
|
+
if (window.opener) {
|
20
|
+
window.opener.postMessage(hash,origin);
|
21
|
+
}
|
22
|
+
</script>
|
23
|
+
</body>
|
24
|
+
</html>
|
@@ -0,0 +1,98 @@
|
|
1
|
+
module Spritz
|
2
|
+
def self.script_tag(client_id, base_url, login_success)
|
3
|
+
output = <<-HEREDOC
|
4
|
+
<script>
|
5
|
+
window.jQuery || document.write('<script src=\"//ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js\">\\x3C/script>');
|
6
|
+
var SpritzSettings = {
|
7
|
+
clientId: \"#{client_id}\",
|
8
|
+
redirectUri: \"#{base_url}/#{login_success}\"
|
9
|
+
};
|
10
|
+
if (!(/^https?:\\/\\//i.test(SpritzSettings.redirectUri))) {
|
11
|
+
SpritzSettings.redirectUri = window.location.protocol + "//" + window.location.host + SpritzSettings.redirectUri;
|
12
|
+
}
|
13
|
+
</script>
|
14
|
+
<script id=\"spritzjs\" type=\"text/javascript\" src=\"//sdk.spritzinc.com/js/1.0/js/spritz.min.js\"></script>
|
15
|
+
HEREDOC
|
16
|
+
output.gsub(/^\s*/, "")
|
17
|
+
end
|
18
|
+
|
19
|
+
def self.redicle_tag(options = {})
|
20
|
+
# Set default options
|
21
|
+
options["data-role"] = "spritzer"
|
22
|
+
attributes = Spritz::get_attribute_string(options)
|
23
|
+
"<p><div #{attributes}></div></p>"
|
24
|
+
end
|
25
|
+
|
26
|
+
def self.get_attribute_string(options)
|
27
|
+
attributes = ""
|
28
|
+
options.each do |k, v|
|
29
|
+
next unless k and v
|
30
|
+
attributes += " " unless attributes.empty?
|
31
|
+
attributes += "#{k} = '#{v}'"
|
32
|
+
end
|
33
|
+
attributes
|
34
|
+
end
|
35
|
+
|
36
|
+
def self.sanitize_options(config)
|
37
|
+
return unless config["spritz"] && config["spritz"]["url"]
|
38
|
+
|
39
|
+
if config[config["spritz"]["url"]]
|
40
|
+
config["spritz"]["url"] = config[config["spritz"]["url"]]
|
41
|
+
end
|
42
|
+
|
43
|
+
unless /https?:\/\// =~ config["spritz"]["url"]
|
44
|
+
config["spritz"]["url"] = "http://" + config["spritz"]["url"]
|
45
|
+
Jekyll.logger.warn "Spritz for Jekyll:", " URL does not contain protocol. We will use HTTP by default."
|
46
|
+
end
|
47
|
+
|
48
|
+
if /\/$/ =~ config["spritz"]["url"]
|
49
|
+
config["spritz"]["url"].gsub!(/\/+$/, "")
|
50
|
+
Jekyll.logger.warn "Spritz for Jekyll:", "URL ends with a forward slash. We will remove it for you."
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
private
|
55
|
+
def get_options(config)
|
56
|
+
@options = {}
|
57
|
+
Spritz::sanitize_options(config)
|
58
|
+
|
59
|
+
@options[:client_id] = config["spritz"]["client_id"]
|
60
|
+
@options[:url] = config["spritz"]["url"]
|
61
|
+
@options[:login_success] = config["spritz"]["login_success_name"]
|
62
|
+
@options[:selector] = config["spritz"]["selector"]
|
63
|
+
@options[:automode] = config["spritz"]["auto_mode"]
|
64
|
+
|
65
|
+
# Redicle options
|
66
|
+
@options[:redicle] = {}
|
67
|
+
return unless config["spritz"]["redicle"]
|
68
|
+
@options[:redicle][:redicleWidth] = config["spritz"]["redicle"]["width"]
|
69
|
+
@options[:redicle][:redicleHeight] = config["spritz"]["redicle"]["height"]
|
70
|
+
@options[:redicle][:defaultSpeed] = config["spritz"]["redicle"]["default_speed"]
|
71
|
+
@options[:redicle][:speedItems] = config["spritz"]["redicle"]["speed_items"]
|
72
|
+
@options[:redicle][:controlButtons] = config["spritz"]["redicle"]["control_buttons"]
|
73
|
+
@options[:redicle][:controlTitles] = config["spritz"]["redicle"]["control_titles"]
|
74
|
+
end
|
75
|
+
|
76
|
+
def warn_and_set_default
|
77
|
+
if @options[:client_id].nil?
|
78
|
+
Jekyll.logger.warn "Spritz for Jekyll:", "You need a client ID!"
|
79
|
+
@options[:client_id] = "12345"
|
80
|
+
end
|
81
|
+
|
82
|
+
if @options[:url].nil?
|
83
|
+
Jekyll.logger.warn "Spritz for Jekyll:", "URL not set. Will guess on client side."
|
84
|
+
end
|
85
|
+
|
86
|
+
if @options[:login_success].nil?
|
87
|
+
@options[:login_success] = "login_success.html"
|
88
|
+
end
|
89
|
+
|
90
|
+
if @options[:automode].nil?
|
91
|
+
@options[:automode] = true
|
92
|
+
end
|
93
|
+
|
94
|
+
unless @options[:redicle].nil?
|
95
|
+
@options[:redicle].delete_if { |_,v| v.nil? }
|
96
|
+
end
|
97
|
+
end
|
98
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
module Spritz
|
2
|
+
class Generator < Jekyll::Generator
|
3
|
+
include Spritz
|
4
|
+
|
5
|
+
def initialize(*args)
|
6
|
+
super
|
7
|
+
login_success_path = args[0]["spritz"]["login_success_name"] || "login_success.html"
|
8
|
+
dirname = File.dirname(login_success_path)
|
9
|
+
|
10
|
+
FileUtils.mkdir_p(dirname)
|
11
|
+
|
12
|
+
source = File.join(File.dirname(__FILE__), "..", "login_success.html")
|
13
|
+
destination = File.join(args[0]["source"], login_success_path)
|
14
|
+
FileUtils.copy(source, destination)
|
15
|
+
end
|
16
|
+
|
17
|
+
def generate(site)
|
18
|
+
get_options(site.config)
|
19
|
+
warn_and_set_default
|
20
|
+
return unless @options[:automode]
|
21
|
+
|
22
|
+
snippet = Spritz::script_tag(@options[:client_id], @options[:url], @options[:login_success])
|
23
|
+
snippet += Spritz::redicle_tag("data-selector" => @options[:selector], "data-options" => @options[:redicle].to_json)
|
24
|
+
|
25
|
+
site.posts.each do |p|
|
26
|
+
p.content = snippet + p.content if p.data["spritz"].nil? or p.data["spritz"]
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
module Spritz
|
2
|
+
class SpritzScriptTag < Liquid::Tag
|
3
|
+
include Spritz
|
4
|
+
include Spritz::Tags
|
5
|
+
|
6
|
+
def render(context)
|
7
|
+
get_site(context.environments)
|
8
|
+
return if @site.nil?
|
9
|
+
get_options(@site)
|
10
|
+
warn_and_set_default
|
11
|
+
Spritz::script_tag(@options[:client_id], @options[:url], @options[:login_success])
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
class SpritzRedicleTag < Liquid::Tag
|
16
|
+
include Spritz
|
17
|
+
include Spritz::Tags
|
18
|
+
|
19
|
+
def render(context)
|
20
|
+
get_site(context.environments)
|
21
|
+
return if @site.nil?
|
22
|
+
get_options(@site)
|
23
|
+
warn_and_set_default
|
24
|
+
Spritz::redicle_tag("data-selector" => @options[:selector], "data-options" => @options[:redicle].to_json)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
Liquid::Template.register_tag('spritz_scripts', Spritz::SpritzScriptTag)
|
30
|
+
Liquid::Template.register_tag('spritz_redicle', Spritz::SpritzRedicleTag)
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: spritz_for_jekyll
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Yihang Ho
|
@@ -58,7 +58,12 @@ executables: []
|
|
58
58
|
extensions: []
|
59
59
|
extra_rdoc_files: []
|
60
60
|
files:
|
61
|
+
- lib/login_success.html
|
61
62
|
- lib/spritz_for_jekyll.rb
|
63
|
+
- lib/spritz_for_jekyll/commons/spritz.rb
|
64
|
+
- lib/spritz_for_jekyll/commons/tags.rb
|
65
|
+
- lib/spritz_for_jekyll/generator.rb
|
66
|
+
- lib/spritz_for_jekyll/tags.rb
|
62
67
|
homepage: https://github.com/yihangho/spritz-for-jekyll
|
63
68
|
licenses:
|
64
69
|
- MIT
|