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.
Files changed (35) hide show
  1. data/Rakefile +1 -0
  2. data/VERSION +1 -1
  3. data/lib/caboodle/app.rb +0 -1
  4. data/lib/caboodle/app/views/layout.haml +1 -1
  5. data/lib/caboodle/kit.rb +38 -10
  6. data/lib/caboodle/kits/about/about.rb +17 -0
  7. data/lib/caboodle/kits/about/config/about.md +1 -0
  8. data/lib/caboodle/kits/analytics/analytics.rb +16 -15
  9. data/lib/caboodle/kits/beta/beta.rb +3 -0
  10. data/lib/caboodle/kits/carbonmade/carbonmade.rb +2 -1
  11. data/lib/caboodle/kits/debugger/debugger.rb +0 -2
  12. data/lib/caboodle/kits/disqus/disqus.rb +3 -1
  13. data/lib/caboodle/kits/flickr/flickr.rb +2 -0
  14. data/lib/caboodle/kits/github/github.rb +4 -4
  15. data/lib/caboodle/kits/googlelocal/config/googlelocal.yml +10 -7
  16. data/lib/caboodle/kits/googlelocal/googlelocal.rb +24 -2
  17. data/lib/caboodle/kits/googlelocal/views/googlelocal.haml +37 -30
  18. data/lib/caboodle/kits/googlelocal/views/googlelocal.scss +8 -0
  19. data/lib/caboodle/kits/gravatar/gravatar.rb +3 -0
  20. data/lib/caboodle/kits/history/history.rb +2 -10
  21. data/lib/caboodle/kits/history/views/history.haml +2 -2
  22. data/lib/caboodle/kits/jquery/jquery.rb +1 -0
  23. data/lib/caboodle/kits/lazyload/lazyload.rb +1 -0
  24. data/lib/caboodle/kits/linkedin/linkedin.rb +2 -0
  25. data/lib/caboodle/kits/onepage/onepage.rb +2 -0
  26. data/lib/caboodle/kits/posterous/posterous.rb +5 -3
  27. data/lib/caboodle/kits/seo/seo.rb +1 -0
  28. data/lib/caboodle/kits/soundcloud/soundcloud.rb +1 -0
  29. data/lib/caboodle/kits/standard/standard.rb +1 -0
  30. data/lib/caboodle/kits/susy/susy.rb +1 -1
  31. data/lib/caboodle/kits/susy/views/susy/screen.scss +5 -3
  32. data/lib/caboodle/kits/tumblr/tumblr.rb +2 -1
  33. data/lib/caboodle/kits/twitter/twitter.rb +1 -1
  34. data/lib/caboodle/kits/typekit/typekit.rb +1 -0
  35. metadata +20 -4
data/Rakefile CHANGED
@@ -22,6 +22,7 @@ begin
22
22
  gem.add_dependency "sleepy",">=0.1.4"
23
23
  gem.add_dependency "tumblr-rb"
24
24
  gem.add_dependency "rack-geo"
25
+ gem.add_dependency "maruku"
25
26
  end
26
27
  Jeweler::GemcutterTasks.new
27
28
  rescue LoadError
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.2.13
1
+ 0.2.14
@@ -1,6 +1,5 @@
1
1
  module Caboodle
2
2
  class App < Sinatra::Base
3
-
4
3
  set :app_file, __FILE__
5
4
  set :logging, true
6
5
  set :root, File.expand_path(".")
@@ -63,7 +63,7 @@
63
63
  - link_class << " active" if p[:kit] == self.class
64
64
  %li
65
65
  = above_nav_item
66
- %a{:href=>p[:link], :class=>link_class}
66
+ %a{:href=>p[:link], :class=>link_class, :rel=>"me"}
67
67
  = above_nav_item_title
68
68
  = p[:display]
69
69
  = below_nav_item_title
@@ -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 :config, config_path
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(root,"config",file)}" "#{File.join(Caboodle::App.root,"config",".")}"` rescue "Could not create the config yml file"
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
- if Caboodle::Site[r].blank?
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}' rel='me'>#{self.name.split("::").last}</a>\"
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[self.ancestors.first.to_s.split("::").last] ||= []
302
- RequiredSettings[self.ancestors.first.to_s.split("::").last]
324
+ RequiredSettings[kit_name] ||= []
325
+ RequiredSettings[kit_name]
303
326
  end
304
327
 
305
328
  def optional_settings
306
- OptionalSettings[self.ancestors.first.to_s.split("::").last] ||= []
307
- OptionalSettings[self.ancestors.first.to_s.split("::").last]
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 - #{self.ancestors.first} is disabled because:"
354
+ STDERR.puts "Warning - #{kit_name} is disabled because:"
327
355
  STDERR.puts errors.join("\n")
328
- Caboodle::Errors << Hashie::Mash.new(:title=>"#{self.ancestors.first} is disable", :reason=>errors.join(";"))
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
- add_to_layout "after_body" => "<script type=\"text/javascript\">
3
+ description "Adds Google Analytics to every page of the site"
4
+ required [:analytics_id]
5
+ end
6
+ end
4
7
 
5
- var _gaq = _gaq || [];
6
- _gaq.push(['_setAccount', '#{Caboodle::Site.analytics_id}']);
7
- _gaq.push(['_setDomainName', 'none']);
8
- _gaq.push(['_setAllowLinker', true]);
9
- _gaq.push(['_trackPageview']);
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
- (function() {
12
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
13
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
14
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
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
- </script>"
18
- required [:analytics_id]
19
- end
20
- end
21
+ </script>"
@@ -1,5 +1,8 @@
1
1
  module Caboodle
2
2
  class Beta < Caboodle::Kit
3
+
4
+ description "Displays a beta message on every page of the site"
5
+
3
6
  required [:beta_message]
4
7
  add_sass ["beta"]
5
8
  end
@@ -1,6 +1,7 @@
1
1
  module Caboodle
2
2
  class Carbonmade < Caboodle::Kit
3
-
3
+ description "Embeds a Carbonmade.com portfolio."
4
+
4
5
  menu "Portfolio", "/portfolio" do
5
6
  @title = "Portfolio"
6
7
  haml :carbonmade
@@ -1,8 +1,6 @@
1
1
  module Caboodle
2
2
  class Debugger < Caboodle::Kit
3
3
 
4
- puts "Running debugger"
5
- puts Caboodle::Debug.inspect
6
4
  Caboodle::Debug.each do |debug|
7
5
  Caboodle::Layout.below_footer = "<div id='debug'>"
8
6
  Caboodle::Layout.below_footer << "<p>#{debug}</p>"
@@ -1,6 +1,8 @@
1
1
  module Caboodle
2
2
  class Disqus < Caboodle::Kit
3
-
3
+
4
+ description "Adds a chat page and support for other kits that require comments"
5
+
4
6
  menu "Chat", "/chat" do
5
7
  @title = "Chat"
6
8
  haml :disqus
@@ -49,6 +49,8 @@ module Caboodle
49
49
 
50
50
  class Flickr < Caboodle::Kit
51
51
 
52
+ description "A browsable Flickr.com gallery with sets"
53
+
52
54
  menu "Photography", "/photography" do
53
55
  unless Site.flickr_user_id.blank?
54
56
  @photosets = FlickrAPI.photosets rescue []
@@ -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
- defaults []
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
- Home:
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
- Old Stomping Ground:
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
- @locations = Config.google_local_locations
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
- #mapsearch
2
- %span
3
- Loading...
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
- window._uds_msw_donotrepair = true;
9
- %script{:src=>"http://www.google.com/uds/solutions/mapsearch/gsmapsearch.js?mode=new", :type=>"text/javascript"}
10
- :javascript
11
- var localSearch;
12
- function LoadMapSearchControl() {
13
- var options = {
14
- zoomControl : GSmapSearchControl.ZOOM_CONTROL_ENABLE_ALL,
15
- title : '#{Caboodle::Site.title}',
16
- url : '#{request.host}',
17
- idleMapZoom : GSmapSearchControl.ACTIVE_MAP_ZOOM+1,
18
- activeMapZoom : GSmapSearchControl.ACTIVE_MAP_ZOOM+1
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
- var center = new Object();
22
- center.lat = #{@locations.first.latitude};
23
- center.lng = #{@locations.first.longitude};
24
- localSearch = new GSmapSearchControl(
25
- document.getElementById("mapsearch"),
26
- center,
27
- options
28
- );
29
- }
30
- $(document).ready(function(){LoadMapSearchControl()});
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
- Search for something in the local area
39
+ %h2
40
+ Search for something in the local area
@@ -8,4 +8,12 @@
8
8
  .gsmsc-idleMapDiv {
9
9
  height: 320px;
10
10
  }
11
+ }
12
+
13
+ .page.googlelocal {
14
+ nav {
15
+ ul {
16
+ @include inline-block-list(12px);
17
+ }
18
+ }
11
19
  }
@@ -2,6 +2,9 @@ require 'digest/md5'
2
2
 
3
3
  module Caboodle
4
4
  class Standard < Caboodle::Kit
5
+
6
+ description "Sets the logo of the site to your gravatar.com image"
7
+
5
8
  optional [:email]
6
9
 
7
10
  configure do
@@ -13,17 +13,9 @@ require "sinatra/advanced_routes"
13
13
  module Caboodle
14
14
  class History < Caboodle::Kit
15
15
 
16
- config_files ["history.yml"]
16
+ description "A list of things you have done in the past."
17
17
 
18
- configure do
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.config.history_years.respond_to?(:sort)
5
- - Caboodle::History.config.history_years.sort.reverse.each do |year,items|
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
@@ -1,5 +1,6 @@
1
1
  module Caboodle
2
2
  class Jquery < Caboodle::Kit
3
+ description "Adds Jquery to every page of the site"
3
4
  javascripts ["http://ajax.googleapis.com/ajax/libs/jquery/#{Caboodle::Site.jquery_version || "1.4.2"}/jquery.min.js"]
4
5
  end
5
6
  end
@@ -1,5 +1,6 @@
1
1
  module Caboodle
2
2
  class LazyLoad < Caboodle::Kit
3
+ description "Improves page load times for javascript-enabled browsers by loading images on demand as the user scrolls the page."
3
4
  javascripts ["/jquery.lazyload.mini.js","/lazyload.js"]
4
5
  end
5
6
  end
@@ -16,6 +16,8 @@ module Caboodle
16
16
 
17
17
  class Linkedin < Caboodle::Kit
18
18
 
19
+ description "Displays a Linkedin profile as a CV with consistent layout with the rest of the site."
20
+
19
21
  menu "CV", "/cv" do
20
22
  @title = "Curriculum Vitae"
21
23
  @linkedin = LinkedinAPI.new #rescue nil
@@ -1,6 +1,8 @@
1
1
  module Caboodle
2
2
  class Onepage < Caboodle::Kit
3
3
 
4
+ description "Embeds a Onepage.com contact card and loads it at /contact"
5
+
4
6
  menu "Contact", "/contact" do
5
7
  @title = "Contact"
6
8
  haml :contact
@@ -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) rescue nil
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) rescue nil
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)) rescue []
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
@@ -1,5 +1,6 @@
1
1
  module Caboodle
2
2
  class Soundcloud < Caboodle::Kit
3
+ description "Displays a search of soundcloud as embedded players on a single page."
3
4
 
4
5
  menu "Mixes", "/mixes" do
5
6
  @title = "Mixes"
@@ -1,5 +1,6 @@
1
1
  module Caboodle
2
2
  class Standard < Caboodle::Kit
3
+ description "The default home page and site options"
3
4
  required [:title, :description, :author]
4
5
  optional [:logo_url]
5
6
  if Caboodle::Site.home_kit.blank?
@@ -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
- #access {
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
@@ -3,7 +3,8 @@ require 'tumblr'
3
3
 
4
4
  module Caboodle
5
5
  class Tumblr < Caboodle::Kit
6
-
6
+ description "Includes a tumblr.com account"
7
+
7
8
  helpers do
8
9
  def semantic_date post
9
10
  date = Date.parse(post.date)
@@ -1,6 +1,6 @@
1
1
  module Caboodle
2
2
  class Twitter < Caboodle::Kit
3
-
3
+ description "Display recent tweets from a given twitter account, with infinite scrolling for looking back in time."
4
4
  menu "Twitter", "/twitter" do
5
5
  @title = "Twitter"
6
6
  haml :twitter
@@ -1,5 +1,6 @@
1
1
  module Caboodle
2
2
  class Typekit < Caboodle::Kit
3
+ description "Adds support for Typekit.com CSS options"
3
4
  javascripts ["http://use.typekit.com/#{Caboodle::Site.typekit}.js","/typekit.js"]
4
5
  required [:typekit]
5
6
  end
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: 13
4
+ hash: 11
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 2
9
- - 13
10
- version: 0.2.13
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-28 00:00:00 +01:00
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