caboodle 0.2.13 → 0.2.14
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.
- data/Rakefile +1 -0
- data/VERSION +1 -1
- data/lib/caboodle/app.rb +0 -1
- data/lib/caboodle/app/views/layout.haml +1 -1
- data/lib/caboodle/kit.rb +38 -10
- data/lib/caboodle/kits/about/about.rb +17 -0
- data/lib/caboodle/kits/about/config/about.md +1 -0
- data/lib/caboodle/kits/analytics/analytics.rb +16 -15
- data/lib/caboodle/kits/beta/beta.rb +3 -0
- data/lib/caboodle/kits/carbonmade/carbonmade.rb +2 -1
- data/lib/caboodle/kits/debugger/debugger.rb +0 -2
- data/lib/caboodle/kits/disqus/disqus.rb +3 -1
- data/lib/caboodle/kits/flickr/flickr.rb +2 -0
- data/lib/caboodle/kits/github/github.rb +4 -4
- data/lib/caboodle/kits/googlelocal/config/googlelocal.yml +10 -7
- data/lib/caboodle/kits/googlelocal/googlelocal.rb +24 -2
- data/lib/caboodle/kits/googlelocal/views/googlelocal.haml +37 -30
- data/lib/caboodle/kits/googlelocal/views/googlelocal.scss +8 -0
- data/lib/caboodle/kits/gravatar/gravatar.rb +3 -0
- data/lib/caboodle/kits/history/history.rb +2 -10
- data/lib/caboodle/kits/history/views/history.haml +2 -2
- data/lib/caboodle/kits/jquery/jquery.rb +1 -0
- data/lib/caboodle/kits/lazyload/lazyload.rb +1 -0
- data/lib/caboodle/kits/linkedin/linkedin.rb +2 -0
- data/lib/caboodle/kits/onepage/onepage.rb +2 -0
- data/lib/caboodle/kits/posterous/posterous.rb +5 -3
- data/lib/caboodle/kits/seo/seo.rb +1 -0
- data/lib/caboodle/kits/soundcloud/soundcloud.rb +1 -0
- data/lib/caboodle/kits/standard/standard.rb +1 -0
- data/lib/caboodle/kits/susy/susy.rb +1 -1
- data/lib/caboodle/kits/susy/views/susy/screen.scss +5 -3
- data/lib/caboodle/kits/tumblr/tumblr.rb +2 -1
- data/lib/caboodle/kits/twitter/twitter.rb +1 -1
- data/lib/caboodle/kits/typekit/typekit.rb +1 -0
- metadata +20 -4
data/Rakefile
CHANGED
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.2.
|
1
|
+
0.2.14
|
data/lib/caboodle/app.rb
CHANGED
data/lib/caboodle/kit.rb
CHANGED
@@ -19,6 +19,12 @@ module Caboodle
|
|
19
19
|
response.headers['Cache-Control'] = "public, max-age=#{Caboodle::Site.cache_for}"
|
20
20
|
end
|
21
21
|
|
22
|
+
error SocketError do
|
23
|
+
@title = "Whoops!"
|
24
|
+
@message = "Sorry. There was a problem communicating with #{self.class.kit_name}."
|
25
|
+
haml File.open(File.join(Caboodle::Kit.root, "views","error.haml")).read
|
26
|
+
end
|
27
|
+
|
22
28
|
Config = Hashie::Mash.new
|
23
29
|
|
24
30
|
class << self
|
@@ -26,7 +32,7 @@ module Caboodle
|
|
26
32
|
attr_accessor :credit_link
|
27
33
|
|
28
34
|
def configure_site config_path
|
29
|
-
set :
|
35
|
+
set :config_path, config_path
|
30
36
|
if File.exists?(config_path)
|
31
37
|
Caboodle::Kit.load_config(config_path)
|
32
38
|
Caboodle::Kit.setup
|
@@ -36,6 +42,7 @@ module Caboodle
|
|
36
42
|
end
|
37
43
|
|
38
44
|
def inherited subclass
|
45
|
+
set :kit_root, File.expand_path(File.dirname(caller[0].split(/:in/).last))
|
39
46
|
c = caller[0].split(":")
|
40
47
|
f = File.dirname(File.expand_path("#{c[0]}"))
|
41
48
|
views = File.join(f, "views")
|
@@ -84,12 +91,28 @@ module Caboodle
|
|
84
91
|
if File.exists?(config_path)
|
85
92
|
load_custom_config(config_path)
|
86
93
|
else
|
87
|
-
`cp "#{File.join(
|
94
|
+
`cp "#{File.join(kit_root,"config",file)}" "#{File.join(Caboodle::App.root,"config",".")}"` rescue "Could not create the config yml file"
|
88
95
|
puts "\nThis kit has a separate configuration file which you must edit:\n #{File.expand_path(File.join(Caboodle::App.root,"config",file))}\n"
|
89
96
|
end
|
90
97
|
end
|
91
98
|
end
|
92
99
|
end
|
100
|
+
|
101
|
+
def files array_of_files
|
102
|
+
configure do
|
103
|
+
array_of_files.each do |file|
|
104
|
+
target_path = File.expand_path(File.join(Caboodle::App.root,"config",file))
|
105
|
+
unless File.exists?(target_path)
|
106
|
+
`cp "#{File.join(kit_root,"config",file)}" "#{File.join(Caboodle::App.root,"config",".")}"` rescue "Could not create the config yml file"
|
107
|
+
end
|
108
|
+
end
|
109
|
+
end
|
110
|
+
end
|
111
|
+
|
112
|
+
def description string
|
113
|
+
puts "\n"
|
114
|
+
puts "#{name.to_s.split("::").last}: #{string}"
|
115
|
+
end
|
93
116
|
|
94
117
|
def setup
|
95
118
|
require_all
|
@@ -169,7 +192,7 @@ module Caboodle
|
|
169
192
|
end
|
170
193
|
end
|
171
194
|
optional_settings.each do |r|
|
172
|
-
|
195
|
+
unless defined?(Caboodle::Site[r])
|
173
196
|
ask_user r, true
|
174
197
|
end
|
175
198
|
end
|
@@ -293,25 +316,30 @@ module Caboodle
|
|
293
316
|
def credit url
|
294
317
|
#todo there must be an easier way
|
295
318
|
class_eval "def credit_link
|
296
|
-
\"<a rel='me' href='#{url}'
|
319
|
+
\"<a rel='me' href='#{url}'>#{self.name.split("::").last}</a>\"
|
297
320
|
end"
|
298
321
|
end
|
299
322
|
|
300
323
|
def required_settings
|
301
|
-
RequiredSettings[
|
302
|
-
RequiredSettings[
|
324
|
+
RequiredSettings[kit_name] ||= []
|
325
|
+
RequiredSettings[kit_name]
|
303
326
|
end
|
304
327
|
|
305
328
|
def optional_settings
|
306
|
-
OptionalSettings[
|
307
|
-
OptionalSettings[
|
329
|
+
OptionalSettings[kit_name] ||= []
|
330
|
+
OptionalSettings[kit_name]
|
308
331
|
end
|
309
332
|
|
333
|
+
def kit_name
|
334
|
+
self.ancestors.first.to_s.split("::").last
|
335
|
+
end
|
336
|
+
|
310
337
|
def available_kits
|
311
338
|
Dir.new(File.join(File.dirname(__FILE__),"kits")).entries.delete_if{|a| a[0,1]=="."}
|
312
339
|
end
|
313
340
|
|
314
341
|
def start
|
342
|
+
|
315
343
|
errors = []
|
316
344
|
self.required_settings.each do |s|
|
317
345
|
if Site[s].blank?
|
@@ -323,9 +351,9 @@ module Caboodle
|
|
323
351
|
Caboodle::App.use self
|
324
352
|
else
|
325
353
|
STDERR.puts " "
|
326
|
-
STDERR.puts "Warning - #{
|
354
|
+
STDERR.puts "Warning - #{kit_name} is disabled because:"
|
327
355
|
STDERR.puts errors.join("\n")
|
328
|
-
Caboodle::Errors << Hashie::Mash.new(:title=>"#{
|
356
|
+
Caboodle::Errors << Hashie::Mash.new(:title=>"#{kit_name} is disable", :reason=>errors.join(";"))
|
329
357
|
end
|
330
358
|
end
|
331
359
|
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
require 'maruku'
|
2
|
+
|
3
|
+
module Caboodle
|
4
|
+
class About < Caboodle::Kit
|
5
|
+
|
6
|
+
description "Gives you an About page at /about. Edit the Markdown file located in your application config directory."
|
7
|
+
|
8
|
+
files ["about.md"]
|
9
|
+
|
10
|
+
menu "About", "/about" do
|
11
|
+
@title = "About"
|
12
|
+
md = File.expand_path(File.join(Caboodle::App.root,"config","about.md"))
|
13
|
+
@content = Maruku.new(open(md).read).to_html_document
|
14
|
+
haml ".page.about.thin_page= @content"
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1 @@
|
|
1
|
+
A page about me.
|
@@ -1,20 +1,21 @@
|
|
1
1
|
module Caboodle
|
2
2
|
class Analytics < Caboodle::Kit
|
3
|
-
|
3
|
+
description "Adds Google Analytics to every page of the site"
|
4
|
+
required [:analytics_id]
|
5
|
+
end
|
6
|
+
end
|
4
7
|
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
8
|
+
Caboodle::Layout.add_to_layout "after_body" => "<script type=\"text/javascript\">
|
9
|
+
var _gaq = _gaq || [];
|
10
|
+
_gaq.push(['_setAccount', '#{Caboodle::Site.analytics_id}']);
|
11
|
+
_gaq.push(['_setDomainName', 'none']);
|
12
|
+
_gaq.push(['_setAllowLinker', true]);
|
13
|
+
_gaq.push(['_trackPageview']);
|
10
14
|
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
15
|
+
(function() {
|
16
|
+
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
|
17
|
+
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
|
18
|
+
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
|
19
|
+
})();
|
16
20
|
|
17
|
-
|
18
|
-
required [:analytics_id]
|
19
|
-
end
|
20
|
-
end
|
21
|
+
</script>"
|
@@ -1,6 +1,8 @@
|
|
1
1
|
module Caboodle
|
2
2
|
class Github < Caboodle::Kit
|
3
3
|
|
4
|
+
description "A single page which links to all of a Github account's public repos"
|
5
|
+
|
4
6
|
menu "Code", "/code" do
|
5
7
|
@title = "Code"
|
6
8
|
@repos = GithubAPI.repositories
|
@@ -16,10 +18,8 @@ module Caboodle
|
|
16
18
|
end
|
17
19
|
|
18
20
|
required [:github_username]
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
credit "http://gitbhu.com/#{Site.github_username}"
|
21
|
+
|
22
|
+
credit "http://github.com/#{Site.github_username}"
|
23
23
|
end
|
24
24
|
|
25
25
|
class GithubAPI < Weary::Base
|
@@ -1,15 +1,18 @@
|
|
1
1
|
:google_local_locations:
|
2
|
-
|
2
|
+
-
|
3
|
+
title: Home
|
3
4
|
description: My home is in North London
|
4
5
|
address: Southgate, London, UK
|
5
|
-
latitude: 51.511867
|
6
|
-
longitude: -0.127587
|
7
|
-
Work:
|
8
|
-
description: I work at All In near Leicester Square
|
9
|
-
address: 4-5 Great Newport Street, London, WC1 2EH
|
10
6
|
latitude: 51.632483
|
11
7
|
longitude: -0.127931
|
12
|
-
|
8
|
+
-
|
9
|
+
title: Work
|
10
|
+
description: I work at All In near Leicester Square
|
11
|
+
address: 4-5 Great Newport Street, London, WC1 2EH
|
12
|
+
latitude: 51.511867
|
13
|
+
longitude: -0.127587
|
14
|
+
-
|
15
|
+
title: Birmingham
|
13
16
|
description: I used to spend a lot of time in Birmingham
|
14
17
|
address: 4-5 Great Newport Street, London, WC1 2EH
|
15
18
|
latitude: 52.446594
|
@@ -1,18 +1,40 @@
|
|
1
1
|
module Caboodle
|
2
2
|
class Googlelocal < Caboodle::Kit
|
3
|
+
|
4
|
+
description "A google map linking to a list of locations and enabling Local Search around each of them."
|
5
|
+
|
3
6
|
required [:google_maps_api_key]
|
4
7
|
|
5
8
|
config_files ["googlelocal.yml"]
|
6
9
|
|
7
10
|
stylesheets ["http://www.google.com/uds/solutions/mapsearch/gsmapsearch.css", "http://www.google.com/uds/css/gsearch.css"]
|
8
11
|
|
12
|
+
before do
|
13
|
+
@locations = Config.google_local_locations
|
14
|
+
end
|
15
|
+
|
9
16
|
menu "Near me", "/near_me" do
|
10
17
|
@title = "Near me"
|
11
|
-
@
|
12
|
-
puts @locations.inspect
|
18
|
+
@location = Config.google_local_locations.first
|
13
19
|
haml :googlelocal
|
14
20
|
end
|
15
21
|
|
22
|
+
get "/near_me/:slug" do
|
23
|
+
Config.google_local_locations.each do |loc|
|
24
|
+
if loc.title.downcase.gsub(" ","-") == params[:slug]
|
25
|
+
@location = loc
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
puts @location.inspect
|
30
|
+
|
31
|
+
if @location
|
32
|
+
haml :googlelocal
|
33
|
+
else
|
34
|
+
redirect "/near_me"
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
16
38
|
add_sass ["googlelocal"]
|
17
39
|
end
|
18
40
|
end
|
@@ -1,33 +1,40 @@
|
|
1
|
-
|
2
|
-
%
|
3
|
-
|
1
|
+
.googlelocal.page
|
2
|
+
%nav.locations
|
3
|
+
%ul
|
4
|
+
- @locations.each do |loc|
|
5
|
+
%li
|
6
|
+
%a{:href=>"/near_me/#{loc.title.downcase.gsub(" ","-")}"}
|
7
|
+
= loc.title
|
8
|
+
#mapsearch
|
9
|
+
%span
|
10
|
+
Loading...
|
4
11
|
|
5
|
-
%script{:src=>"http://maps.google.com/maps?file=api&v=2&key=#{Caboodle::Site.google_maps_api_key}", :type=>"text/javascript"}
|
6
|
-
%script{:src=>"http://www.google.com/uds/api?file=uds.js&v=1.0&source=uds-msw&key=#{Caboodle::Site.google_maps_api_key}", :type=>"text/javascript"}
|
7
|
-
:javascript
|
8
|
-
|
9
|
-
%script{:src=>"http://www.google.com/uds/solutions/mapsearch/gsmapsearch.js?mode=new", :type=>"text/javascript"}
|
10
|
-
:javascript
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
12
|
+
%script{:src=>"http://maps.google.com/maps?file=api&v=2&key=#{Caboodle::Site.google_maps_api_key}", :type=>"text/javascript"}
|
13
|
+
%script{:src=>"http://www.google.com/uds/api?file=uds.js&v=1.0&source=uds-msw&key=#{Caboodle::Site.google_maps_api_key}", :type=>"text/javascript"}
|
14
|
+
:javascript
|
15
|
+
window._uds_msw_donotrepair = true;
|
16
|
+
%script{:src=>"http://www.google.com/uds/solutions/mapsearch/gsmapsearch.js?mode=new", :type=>"text/javascript"}
|
17
|
+
:javascript
|
18
|
+
var localSearch;
|
19
|
+
function LoadMapSearchControl() {
|
20
|
+
var options = {
|
21
|
+
zoomControl : GSmapSearchControl.ZOOM_CONTROL_ENABLE_ALL,
|
22
|
+
title : '#{Caboodle::Site.title}',
|
23
|
+
url : '#{request.host}',
|
24
|
+
idleMapZoom : GSmapSearchControl.ACTIVE_MAP_ZOOM+1,
|
25
|
+
activeMapZoom : GSmapSearchControl.ACTIVE_MAP_ZOOM+1
|
26
|
+
}
|
20
27
|
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
28
|
+
var center = new Object();
|
29
|
+
center.lat = #{@location.latitude};
|
30
|
+
center.lng = #{@location.longitude};
|
31
|
+
localSearch = new GSmapSearchControl(
|
32
|
+
document.getElementById("mapsearch"),
|
33
|
+
center,
|
34
|
+
options
|
35
|
+
);
|
36
|
+
}
|
37
|
+
$(document).ready(function(){LoadMapSearchControl()});
|
31
38
|
|
32
|
-
%h2
|
33
|
-
|
39
|
+
%h2
|
40
|
+
Search for something in the local area
|
@@ -13,17 +13,9 @@ require "sinatra/advanced_routes"
|
|
13
13
|
module Caboodle
|
14
14
|
class History < Caboodle::Kit
|
15
15
|
|
16
|
-
|
16
|
+
description "A list of things you have done in the past."
|
17
17
|
|
18
|
-
|
19
|
-
config_path = File.expand_path(File.join(Caboodle::App.root,"config","history.yml"))
|
20
|
-
if File.exists?(config_path)
|
21
|
-
Caboodle::Kit.load_config(config_path)
|
22
|
-
else
|
23
|
-
`cp "#{File.join(File.dirname(__FILE__),"config","history.yml")}" "#{File.join(Caboodle::App.root,"config",".")}"` rescue "Could not create the sample yml file"
|
24
|
-
puts "Please enter your history items in the file #{File.expand_path(File.join(Caboodle::App.root,"config","history.yml"))}"
|
25
|
-
end
|
26
|
-
end
|
18
|
+
config_files ["history.yml"]
|
27
19
|
|
28
20
|
menu "History", "/history" do
|
29
21
|
@title = "History"
|
@@ -1,8 +1,8 @@
|
|
1
1
|
- #todo - this should be a vcalendar
|
2
2
|
#history.page
|
3
3
|
%dl
|
4
|
-
- if Caboodle::History.
|
5
|
-
- Caboodle::History.
|
4
|
+
- if Caboodle::History::Config.history_years.respond_to?(:sort)
|
5
|
+
- Caboodle::History::Config.history_years.sort.reverse.each do |year,items|
|
6
6
|
%dt.year{:class=>year}
|
7
7
|
= year
|
8
8
|
%dd
|
@@ -132,15 +132,17 @@ module Caboodle
|
|
132
132
|
|
133
133
|
class Posterous < Caboodle::Kit
|
134
134
|
|
135
|
+
description "Displays a Posterous blog with permalinks, pagination and commends if the Disqus kit is included"
|
136
|
+
|
135
137
|
get "/posterous/:page_number" do |page_number|
|
136
|
-
@posts = PosterousPost.page(page_number)
|
138
|
+
@posts = PosterousPost.page(page_number)
|
137
139
|
not_found if @posts.class == Array && @posts.blank?
|
138
140
|
haml :posts
|
139
141
|
end
|
140
142
|
|
141
143
|
get "/:year/:month/:slug" do |year, month, slug|
|
142
144
|
STDERR.puts "Get a post"
|
143
|
-
post = PosterousPost.from_slug(slug)
|
145
|
+
post = PosterousPost.from_slug(slug)
|
144
146
|
STDERR.puts "Slug not found: #{slug}"
|
145
147
|
not_found unless post
|
146
148
|
@title = post.title
|
@@ -148,7 +150,7 @@ module Caboodle
|
|
148
150
|
end
|
149
151
|
|
150
152
|
menu "Blog", "/posterous" do
|
151
|
-
@posts = PosterousPost.all(:page=>(params[:page] || 1))
|
153
|
+
@posts = PosterousPost.all(:page=>(params[:page] || 1))
|
152
154
|
haml :posts.to_sym
|
153
155
|
end
|
154
156
|
|
@@ -1,5 +1,6 @@
|
|
1
1
|
module Caboodle
|
2
2
|
class SEO < Caboodle::Kit
|
3
|
+
description "Adds basic search engine optimisation"
|
3
4
|
add_to_layout "meta" => "<meta type='keywords' value='#{Caboodle::Site.seo_keywords}' /><meta type='description' value='#{Caboodle::Site.seo_description}' />"
|
4
5
|
optional [:seo_keywords,:seo_description]
|
5
6
|
end
|
@@ -11,7 +11,7 @@ require "sinatra/advanced_routes"
|
|
11
11
|
|
12
12
|
module Caboodle
|
13
13
|
class Susy < Caboodle::Kit
|
14
|
-
|
14
|
+
description "Adds Susy CSS formatting"
|
15
15
|
get("/susy/:name.css") do
|
16
16
|
content_type 'text/css', :charset => 'utf-8'
|
17
17
|
sass_dir = File.expand_path(File.join(File.dirname(__FILE__),"views","susy"))
|
@@ -51,9 +51,7 @@ header#site-header {
|
|
51
51
|
color: #ddd;
|
52
52
|
}
|
53
53
|
}
|
54
|
-
|
55
|
-
@include skip-link();
|
56
|
-
}
|
54
|
+
|
57
55
|
nav {
|
58
56
|
@include trailer(1,32px);
|
59
57
|
@include prefix(2);
|
@@ -66,6 +64,10 @@ header#site-header {
|
|
66
64
|
}
|
67
65
|
}
|
68
66
|
|
67
|
+
#access {
|
68
|
+
@include skip-link();
|
69
|
+
}
|
70
|
+
|
69
71
|
section#main {
|
70
72
|
@include full;
|
71
73
|
header#page_title
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: caboodle
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 11
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 2
|
9
|
-
-
|
10
|
-
version: 0.2.
|
9
|
+
- 14
|
10
|
+
version: 0.2.14
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Stef Lewandowski
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2010-08-
|
18
|
+
date: 2010-08-31 00:00:00 +01:00
|
19
19
|
default_executable: caboodle
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
@@ -205,6 +205,20 @@ dependencies:
|
|
205
205
|
version: "0"
|
206
206
|
type: :runtime
|
207
207
|
version_requirements: *id012
|
208
|
+
- !ruby/object:Gem::Dependency
|
209
|
+
name: maruku
|
210
|
+
prerelease: false
|
211
|
+
requirement: &id013 !ruby/object:Gem::Requirement
|
212
|
+
none: false
|
213
|
+
requirements:
|
214
|
+
- - ">="
|
215
|
+
- !ruby/object:Gem::Version
|
216
|
+
hash: 3
|
217
|
+
segments:
|
218
|
+
- 0
|
219
|
+
version: "0"
|
220
|
+
type: :runtime
|
221
|
+
version_requirements: *id013
|
208
222
|
description: Caboodle is a Rack and Sinatra-based framework for creating websites which combine information from various online services. There are Kits for many of the larger services, which provide a way to retrieve and display photos, videos, blog posts, status updates and so on. Caboodle normalises the display of all of these discrete Kits so that you can create a website which looks seamless but is made up of a variety of things from a variety of sources.
|
209
223
|
email: stef@stef.io
|
210
224
|
executables:
|
@@ -252,6 +266,8 @@ files:
|
|
252
266
|
- lib/caboodle/config/defaults.yml
|
253
267
|
- lib/caboodle/helpers.rb
|
254
268
|
- lib/caboodle/kit.rb
|
269
|
+
- lib/caboodle/kits/about/about.rb
|
270
|
+
- lib/caboodle/kits/about/config/about.md
|
255
271
|
- lib/caboodle/kits/analytics/analytics.rb
|
256
272
|
- lib/caboodle/kits/beta/beta.rb
|
257
273
|
- lib/caboodle/kits/beta/views/beta.scss
|