caboodle 0.2.13 → 0.2.14
Sign up to get free protection for your applications and to get access to all the features.
- 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
|