caboodle 0.1.3 → 0.1.4

Sign up to get free protection for your applications and to get access to all the features.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.3
1
+ 0.1.4
data/lib/caboodle.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  $:<<File.dirname(__FILE__)
2
2
  $:<<File.join(File.dirname(__FILE__),"caboodle")
3
- %{sinatra/base sinatra/content_for yaml hashie haml find sinatra/base sinatra/compass sinatra/advanced_routes compass susy pp sleepy caboodle/config caboodle/kit caboodle/app caboodle/scrape}.split.each{|a| require a}
3
+ %{sinatra/base sinatra/content_for yaml hashie haml find sinatra/base sinatra/compass sinatra/advanced_routes compass susy pp sleepy caboodle/helpers caboodle/config caboodle/kit caboodle/app caboodle/scrape}.split.each{|a| require a}
data/lib/caboodle/app.rb CHANGED
@@ -15,7 +15,7 @@ module Caboodle
15
15
  # compass :one_stylesheet
16
16
  # end
17
17
 
18
- helpers Sinatra::ContentFor
18
+ helpers Sinatra::CaboodleHelpers
19
19
 
20
20
  configure do
21
21
  config_path = File.expand_path(File.join(root,"config","site.yml"))
@@ -1,5 +1,5 @@
1
+ has_footer: true
2
+ has_caboodle_link: true
1
3
  kits:
2
- - Flickr
3
- - Linkedin
4
4
  - Posterous
5
5
  - Skimmed
@@ -3,9 +3,10 @@
3
3
  %head{:profile => "http://gmpg.org/xfn/11"}
4
4
  %meta{:content => "text/html; charset=utf-8", "http-equiv" => "content-type"}/
5
5
  %meta{:content => "index,follow", :name => "robots"}/
6
- = Caboodle::Site.meta
7
6
 
8
- %title= @title || Caboodle::Site.title
7
+ = meta
8
+
9
+ %title= title
9
10
  %link{:href => "/stylesheets/screen.css", :rel => "stylesheet", :type => "text/css"}/
10
11
 
11
12
  - Caboodle::Stylesheets.each do |css|
@@ -19,14 +20,14 @@
19
20
  - Caboodle::Javascripts.each do |js|
20
21
  %script{:charset => "utf-8", :src => js, :type => "text/javascript"}
21
22
 
22
- = Caboodle::Site.head
23
+ = head
23
24
 
24
- %body.caboodle.sinatra.ruby
25
- = Caboodle::Site.before_page
25
+ %body.caboodle
26
+ = before_page
26
27
  #page.hfeed
27
- = Caboodle::Site.before_header
28
+ = before_header
28
29
  %header#site-header
29
- = Caboodle::Site.above_header
30
+ = above_header
30
31
  - if Caboodle::Site.logo_url
31
32
  #logo
32
33
  %a{:href => "/", :rel => "home", :title => Caboodle::Site.title }
@@ -36,16 +37,15 @@
36
37
  %h1
37
38
  %a{:href => "/", :rel => "home", :title => Caboodle::Site.title }
38
39
  = Caboodle::Site.title
39
- - if Caboodle::Site.description
40
+ - if description
40
41
  #site-description
41
42
  %h2= Caboodle::Site.description
42
- - if Caboodle::Site.has_access
43
- #access
44
- .skip-link
45
- %a{:href => "#content", :title => "Skip navigation to the content"} Skip to content
43
+ #access
44
+ .skip-link
45
+ %a{:href => "#content", :title => "Skip navigation to the content"} Skip to content
46
46
 
47
47
  - if Caboodle::MenuItems.size > 0
48
- = Caboodle::Site.before_nav
48
+ = before_nav
49
49
  %nav
50
50
  %ul
51
51
  %li
@@ -56,24 +56,24 @@
56
56
  %a{:href=>p[:link]}
57
57
  = p[:display]
58
58
 
59
- = Caboodle::Site.below_header
60
- = Caboodle::Site.after_header
61
- = Caboodle::Site.before_main
59
+ = below_header
60
+ = after_header
61
+ = before_main
62
62
  %section#main
63
63
  - if @title
64
64
  %header#page_title
65
65
  %h1
66
66
  = @title
67
- = Caboodle::Site.before_content
67
+ = before_content
68
68
  %section#content
69
- = Caboodle::Site.above_content
69
+ = above_content
70
70
  = yield
71
- = Caboodle::Site.below_content
72
- = Caboodle::Site.after_content
73
- = Caboodle::Site.after_main
74
- = Caboodle::Site.before_footer
71
+ = below_content
72
+ = after_content
73
+ = after_main
74
+ = before_footer
75
75
  %footer#footer
76
- = Caboodle::Site.above_footer
76
+ = above_footer
77
77
  - if Caboodle::Site.has_footer
78
78
  %p
79
79
  \&copy;
@@ -83,7 +83,7 @@
83
83
  Powered by
84
84
  %a{:href=>"http://github.com/steflewandowski/caboodle"}
85
85
  Caboodle
86
- = Caboodle::Site.below_footer
87
- = Caboodle::Site.after_footer
88
- = Caboodle::Site.after_page
89
- = Caboodle::Site.after_body
86
+ = below_footer
87
+ = after_footer
88
+ = after_page
89
+ = after_body
@@ -1,12 +1,14 @@
1
1
  module Caboodle
2
- Kits = []
3
- MenuItems = []
4
- Javascripts = []
5
- Stylesheets = []
6
- Defaults = Hashie::Mash.new()
2
+ Kits = []
3
+ MenuItems = []
4
+ Javascripts = []
5
+ Stylesheets = []
6
+ Defaults = Hashie::Mash.new(Hashie::Mash.new(YAML.load_file(File.join(File.dirname(__FILE__), 'config','defaults.yml'))))
7
7
  RequiredSettings = Hashie::Mash.new()
8
- Site = Defaults.clone
8
+ Layout = Hashie::Mash.new()
9
+ Site = Defaults.clone
10
+
9
11
  Site.required_settings = []
10
12
  Site.kits = [] unless Site.kits
11
- Defaults.merge!(Hashie::Mash.new(YAML.load_file(File.join( File.join(File.dirname(__FILE__), 'config','defaults.yml')))))
13
+ puts Site.inspect
12
14
  end
@@ -0,0 +1,10 @@
1
+ module Sinatra
2
+ module CaboodleHelpers
3
+
4
+ def method_missing arg
5
+ Caboodle::Layout[arg]
6
+ end
7
+
8
+ end
9
+ helpers CaboodleHelpers
10
+ end
data/lib/caboodle/kit.rb CHANGED
@@ -9,11 +9,24 @@ module Caboodle
9
9
  set :public, Proc.new { File.join(root, "public") }
10
10
  set :haml, {:format => :html5 }
11
11
 
12
+ helpers Sinatra::CaboodleHelpers
13
+
12
14
  template :layout do
13
15
  @@template ||= File.open(File.join(File.dirname(__FILE__),"app","views","layout.haml")).read
14
16
  end
15
17
 
16
18
  class << self
19
+
20
+ def inherited subclass
21
+ c = caller[0].split(":")
22
+ f = File.dirname(File.expand_path("#{c[0]}"))
23
+ views = File.join(f, "views")
24
+ pub = File.join(f, "public")
25
+ subclass.set :views, views if File.exists?(views)
26
+ subclass.set :public, pub if File.exists?(pub)
27
+ super
28
+ end
29
+
17
30
  def is_a_caboodle_kit
18
31
  true
19
32
  end
@@ -46,7 +59,7 @@ module Caboodle
46
59
  kit_name = kit_name.downcase
47
60
  puts "Loading Kit: #{kit_name}"
48
61
  orig = Caboodle.constants
49
- require "caboodle/kits/#{kit_name}/#{kit_name}" rescue puts "Warning! No such kit: #{kit_name}"
62
+ require "caboodle/kits/#{kit_name}/#{kit_name}" rescue puts "Problem loading Kit: #{kit_name}"
50
63
  added = Caboodle.constants - orig
51
64
  added.each do |d|
52
65
  c = Caboodle.const_get(d)
@@ -64,7 +77,7 @@ module Caboodle
64
77
  kit_name = kit_name.downcase
65
78
  puts "Loading Kit: #{kit_name}"
66
79
  orig = Caboodle.constants
67
- require "caboodle/kits/#{kit_name}/#{kit_name}" rescue puts "Warning! No such kit: #{kit_name}"
80
+ require "caboodle/kits/#{kit_name}/#{kit_name}" rescue puts "Problem loading Kit: #{kit_name}"
68
81
  added = Caboodle.constants - orig
69
82
  added.each do |d|
70
83
  c = Caboodle.const_get(d)
@@ -132,6 +145,18 @@ module Caboodle
132
145
  Caboodle::Javascripts.uniq!
133
146
  end
134
147
 
148
+ def add_to_layout hash_of_items
149
+ hash_of_items.each do |k,v|
150
+ unless Caboodle::Layout[k.to_sym].blank?
151
+ Caboodle::Layout[k.to_sym] << "\n"
152
+ Caboodle::Layout[k.to_sym] << v
153
+ else
154
+ Caboodle::Layout[k.to_sym] = v
155
+ end
156
+ end
157
+ puts Caboodle::Layout.inspect
158
+ end
159
+
135
160
  def defaults hash
136
161
  if hash.class == Hash
137
162
  hash.each {|k,v| Site[k] = v }
@@ -0,0 +1,15 @@
1
+ module Caboodle
2
+ class Analytics < Caboodle::Kit
3
+ add_to_layout "after_body" => "<script type=\"text/javascript\">
4
+ var gaJsHost = ((\"https:\" == document.location.protocol) ? \"https://ssl.\" : \"http://www.\");
5
+ document.write(unescape(\"%3Cscript src='\" + gaJsHost + \"google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E\"));
6
+ </script>
7
+ <script type=\"text/javascript\">
8
+ try {
9
+ var pageTracker = _gat._getTracker(\"#{Caboodle::Site.analytics_id}\");
10
+ pageTracker._trackPageview();
11
+ } catch(err) {}
12
+ </script>"
13
+ required [:analytics_id]
14
+ end
15
+ end
@@ -2,12 +2,22 @@ module Caboodle
2
2
 
3
3
  class FlickrAPI < Weary::Base
4
4
 
5
+ def self.flickr_user_id
6
+ return Site.flickr_user_id unless Site.flickr_user_id.blank?
7
+ url = "http://query.yahooapis.com/v1/public/yql?q=use%20%22http%3A%2F%2Fisithackday.com%2Fapi%2Fflickr.whois.xml%22%20as%20flickr.whois%3Bselect%20*%20from%20flickr.whois%20where%20owner%3D%22#{Site.flickr_username}%22&format=xml"
8
+ doc = Nokogiri::XML.parse(open(url))
9
+ val = doc.css("owner").first.attributes["nsid"].value
10
+ Site.flickr_user_id = val
11
+ Caboodle::Kit.dump_config
12
+ Site.flickr_user_id
13
+ end
14
+
5
15
  def initialize(opts={})
6
16
  self.defaults = {:api_key => Site.flickr_api_key}
7
17
  end
8
18
 
9
19
  declare "photosets" do |r|
10
- r.url = "http://api.flickr.com/services/rest/?method=flickr.photosets.getList&api_key=#{Site.flickr_api_key}&user_id=#{FlickrAPI.flickr_user_id}"
20
+ r.url = "http://api.flickr.com/services/rest/?method=flickr.photosets.getList&api_key=#{Site.flickr_api_key}&user_id=#{Caboodle::FlickrAPI.flickr_user_id}"
11
21
  r.via = :get
12
22
  end
13
23
 
@@ -29,24 +39,11 @@ module Caboodle
29
39
  def self.photosets
30
40
  Caboodle.mash(new.photosets).rsp.photosets.photoset
31
41
  end
32
-
33
- def self.flickr_user_id
34
- return Site.flickr_user_id unless Site.flickr_user_id.blank?
35
- url = "http://query.yahooapis.com/v1/public/yql?q=use%20%22http%3A%2F%2Fisithackday.com%2Fapi%2Fflickr.whois.xml%22%20as%20flickr.whois%3Bselect%20*%20from%20flickr.whois%20where%20owner%3D%22#{Site.flickr_username}%22&format=xml"
36
- doc = Nokogiri::XML.parse(open(url))
37
- val = doc.css("owner").first.attributes["nsid"].value
38
- Site.flickr_user_id = val
39
- Caboodle::Kit.dump_config
40
- Site.flickr_user_id
41
- end
42
-
42
+
43
43
  end
44
44
 
45
45
  class Flickr < Caboodle::Kit
46
46
 
47
- set :views, File.join(File.dirname(__FILE__), "views")
48
- set :public, File.join(File.dirname(__FILE__), "public")
49
-
50
47
  def home
51
48
  @photosets = FlickrAPI.photosets rescue []
52
49
  @title = "Photography"
@@ -1,11 +1,6 @@
1
-
2
-
3
1
  module Caboodle
4
2
  class Github < Caboodle::Kit
5
-
6
- set :views, File.join(File.dirname(__FILE__), "views")
7
- set :public, File.join(File.dirname(__FILE__), "public")
8
-
3
+
9
4
  get "/code" do
10
5
  @title = "Code"
11
6
  @repos = GithubAPI.repositories
@@ -1,13 +1,7 @@
1
1
  module Caboodle
2
-
3
- class Identity
4
-
5
- end
6
2
 
7
- class IdentityApp < Caboodle::Kit
8
-
9
- set :views, File.join(File.dirname(__FILE__), "views")
10
-
3
+ class Identity < Caboodle::Kit
4
+
11
5
  get "/me" do
12
6
  @title = "About me"
13
7
  haml :me, :locals=>{:identity=>Identity.new()}, :layout=>true
@@ -1,6 +1,5 @@
1
1
  module Caboodle
2
2
  class LazyLoad < Caboodle::Kit
3
- set :public, File.join(File.dirname(__FILE__), "public")
4
- javascripts ["jquery.lazyload.mini.js","lazyload.js"]
3
+ javascripts ["/jquery.lazyload.mini.js","/lazyload.js"]
5
4
  end
6
5
  end
@@ -15,14 +15,10 @@ module Caboodle
15
15
  end
16
16
 
17
17
  class Linkedin < Caboodle::Kit
18
-
19
- set :views, File.join(File.dirname(__FILE__), "views")
20
-
18
+
21
19
  get "/cv" do
22
20
  @title = "Curriculum Vitae"
23
-
24
21
  @linkedin = LinkedinAPI.new #rescue nil
25
- #@linkedin.inspect
26
22
  haml :cv
27
23
  end
28
24
 
@@ -1,9 +1,6 @@
1
1
  module Caboodle
2
-
3
2
  class Onepage < Caboodle::Kit
4
-
5
- set :views, File.join(File.dirname(__FILE__), "views")
6
-
3
+
7
4
  get "/contact" do
8
5
  @title = "Contact"
9
6
  haml :contact
@@ -52,9 +52,7 @@ module Caboodle
52
52
  end
53
53
 
54
54
  class PageApp < Caboodle::Kit
55
-
56
- set :views, File.join(File.dirname(__FILE__), "views")
57
-
55
+
58
56
  Caboodle::Site.pages = Caboodle::Page.all
59
57
  Caboodle::Site.pages.each do |page|
60
58
  get "/#{page.slug}" do
@@ -0,0 +1,16 @@
1
+ :portfolio_years:
2
+ 2010:
3
+ -
4
+ title: Something I did
5
+ description: What exactly was it
6
+ link: http://google.com
7
+ role: Googling it
8
+ tags: google searching
9
+ 2009:
10
+ -
11
+ title: Something else I did
12
+ role: Yahooing
13
+ description: Using Yahoo instead
14
+ link: http://yahoo.com
15
+ tags: yahoo searching
16
+
@@ -1,9 +1,16 @@
1
1
  module Caboodle
2
-
3
- class PortfolioApp < Caboodle::Kit
4
-
5
- set :views, File.join(File.dirname(__FILE__), "views")
6
-
2
+ class Portfolio < Caboodle::Kit
3
+
4
+ configure do
5
+ config_path = File.expand_path(File.join(Caboodle::App.root,"config","portfolio.yml"))
6
+ if File.exists?(config_path)
7
+ Caboodle::Kit.load_config(config_path)
8
+ else
9
+ `cp "#{File.join(File.dirname(__FILE__),"config","portfolio.yml")}" "#{File.join(Caboodle::App.root,"config",".")}"` rescue "Could not create the sample yml file"
10
+ puts "Please enter your portfolio items in the file #{File.expand_path(File.join(Caboodle::App.root,"config","portfolio.yml"))}"
11
+ end
12
+ end
13
+
7
14
  get "/portfolio" do
8
15
  @title = "Portfolio"
9
16
  haml :portfolio
@@ -132,8 +132,6 @@ module Caboodle
132
132
 
133
133
  class Posterous < Caboodle::Kit
134
134
 
135
- set :views, File.join(File.dirname(__FILE__), "views")
136
-
137
135
  get "/page/:page_number" do |page_number|
138
136
  @posts = Post.page(page_number) rescue nil
139
137
  not_found if @posts.class == Array && @posts.blank?
@@ -0,0 +1,6 @@
1
+ module Caboodle
2
+ class SEO < Caboodle::Kit
3
+ add_to_layout "meta" => "<meta type='keywords' value='#{Caboodle::Site.seo_keywords}' /><meta type='description' value='#{Caboodle::Site.seo_description}' />"
4
+ required [:seo_keywords,:seo_description]
5
+ end
6
+ end
@@ -1,9 +1,6 @@
1
1
  module Caboodle
2
2
  class Soundcloud < Caboodle::Kit
3
3
 
4
- set :views, File.join(File.dirname(__FILE__), "views")
5
- set :public, File.join(File.dirname(__FILE__), "public")
6
-
7
4
  get "/mixes" do
8
5
  @title = "Mixes"
9
6
  @mixes = SoundcloudAPI.sets
@@ -1,9 +1,6 @@
1
1
  module Caboodle
2
2
  class Twitter < Caboodle::Kit
3
3
 
4
- set :views, File.join(File.dirname(__FILE__), "views")
5
- set :public, File.join(File.dirname(__FILE__), "public")
6
-
7
4
  get "/twitter" do
8
5
  @title = "Twitter"
9
6
  haml :twitter
@@ -1,10 +1,6 @@
1
1
  module Caboodle
2
- class Typekit < Caboodle::Kit
3
-
4
- set :public, File.join(File.dirname(__FILE__), "public")
5
-
2
+ class Typekit < Caboodle::Kit
6
3
  javascripts ["http://use.typekit.com/#{Caboodle::Site.typekit}.js","/typekit.js"]
7
-
8
4
  required [:typekit]
9
5
  end
10
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: 29
4
+ hash: 19
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 1
9
- - 3
10
- version: 0.1.3
9
+ - 4
10
+ version: 0.1.4
11
11
  platform: ruby
12
12
  authors:
13
13
  - steflewandowski
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2010-08-13 00:00:00 +01:00
18
+ date: 2010-08-14 00:00:00 +01:00
19
19
  default_executable: caboodle
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -274,7 +274,9 @@ files:
274
274
  - lib/caboodle/command.rb
275
275
  - lib/caboodle/config.rb
276
276
  - lib/caboodle/config/defaults.yml
277
+ - lib/caboodle/helpers.rb
277
278
  - lib/caboodle/kit.rb
279
+ - lib/caboodle/kits/analytics/analytics.rb
278
280
  - lib/caboodle/kits/flickr/flickr.rb
279
281
  - lib/caboodle/kits/flickr/public/galleria.noconflict.min.js
280
282
  - lib/caboodle/kits/flickr/views/photography.haml
@@ -288,17 +290,18 @@ files:
288
290
  - lib/caboodle/kits/lazyload/public/lazyload.js
289
291
  - lib/caboodle/kits/linkedin/linkedin.rb
290
292
  - lib/caboodle/kits/linkedin/views/cv.haml
291
- - lib/caboodle/kits/onepage/card.html
292
293
  - lib/caboodle/kits/onepage/onepage.rb
293
294
  - lib/caboodle/kits/onepage/views/contact.haml
294
295
  - lib/caboodle/kits/page/page.rb
295
296
  - lib/caboodle/kits/page/views/page.haml
297
+ - lib/caboodle/kits/portfolio/config/portfolio.yml
296
298
  - lib/caboodle/kits/portfolio/portfolio.rb
297
299
  - lib/caboodle/kits/portfolio/views/portfolio.haml
298
300
  - lib/caboodle/kits/posterous/posterous.rb
299
301
  - lib/caboodle/kits/posterous/views/_post.haml
300
302
  - lib/caboodle/kits/posterous/views/post.haml
301
303
  - lib/caboodle/kits/posterous/views/posts.haml
304
+ - lib/caboodle/kits/seo/seo.rb
302
305
  - lib/caboodle/kits/skimmed/skimmed.rb
303
306
  - lib/caboodle/kits/soundcloud/soundcloud.rb
304
307
  - lib/caboodle/kits/soundcloud/views/soundcloud.haml
@@ -1,220 +0,0 @@
1
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
2
- <html xml:lang="en-us" xmlns="http://www.w3.org/1999/xhtml" xmlns:fb="http://www.facebook.com/2008/fbml">
3
- <head>
4
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
5
- <title>Stef Lewandowski (stef) on OnePage - interactive contact cards</title>
6
-
7
- <link href="http://static.myonepage.com/css/onepage-1279966875.css" media="screen" rel="stylesheet" type="text/css" /> <script type="text/javascript" src="http://static.myonepage.com/js/onepage-1277994110.js"></script>
8
- <style type="text/css">
9
- body { background-color: #61B4EF; } </style>
10
- <script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script>
11
- <script type="text/javascript" src="/js/misc/more.js"></script>
12
- <script type="text/javascript" src="/js/misc/email.v3.js"></script>
13
- <script type="text/javascript" src="/js/misc/cardflip.v2.js"></script>
14
- <script type="text/javascript" src="/js/misc/embed.js"></script>
15
- <meta name="description" content="Create something every day." />
16
- <meta name="keywords" content="OnePage, business card, social networks, card, stream, interactive, contact card, real-time" />
17
- <link rel="icon" type="image/x-icon" href="/favicon.ico" />
18
- <meta name="google-site-verification" content="NAsf4ohBOQ7O0hYPk__bpNxug11uA7luGiq6uk5dx-I" />
19
- <script type="text/javascript">
20
- //<![CDATA[
21
- var _gaq = _gaq || [];
22
- _gaq.push(['_setAccount', 'UA-10039160-2']);
23
- _gaq.push(['_trackPageview']);
24
- (function() {
25
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
26
- ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
27
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
28
- })();
29
- //]]>
30
- </script>
31
- </head>
32
- <body>
33
-
34
- <script type="text/javascript">
35
- //<![CDATA[
36
- var _kmq = _kmq || [];
37
- (function(){function _kms(u,d){if(navigator.appName.indexOf("Microsoft")==0 && d)document.write("<scr"+"ipt defer='defer' async='true' src='"+u+"'></scr"+"ipt>");else{var s=document.createElement('script');s.type='text/javascript';s.async=true;s.src=u;(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(s);}}_kms('https://i.kissmetrics.com/i.js');_kms('http'+('https:'==document.location.protocol ? 's://s3.amazonaws.com/' : '://')+'scripts.kissmetrics.com/c94de5e9d21ab6ab8c6f9d4bd466739ab67f0645.1.js',1);})();
38
- //]]>
39
- </script>
40
-
41
- <div id="container">
42
- <div id="feedback"><a href="http://onepage.uservoice.com" title="Give us feedback using UserVoice">Feedback</a></div>
43
- <div id="above-top-bar">
44
- <div id="retweet_button">
45
- <script type="text/javascript">
46
- tweetmeme_style = 'compact';
47
- tweetmeme_source = 'myonepage';
48
- </script>
49
- <script type="text/javascript" src="http://tweetmeme.com/i/scripts/button.js"></script>
50
- </div>
51
- <div id="facebook_like"><iframe src="http://www.facebook.com/kits/like.php?href=http://myonepage.com/stef&layout=button_count&amp;show-faces=true&amp;width=200&amp;action=like&amp;colorscheme=light" scrolling="no" frameborder="0" allowTransparency="true" style="border:none; overflow:hidden; width: 85px; height: 20px;"></iframe></div>
52
- </div>
53
- <div id="top-bar" class="roundedgradientshadow">
54
- <h1 id="logo"><a href="/"><img src="http://static.myonepage.com/images/onepage-rez.png" alt="OnePage" /></a></h1>
55
-
56
-
57
- <!-- start login bar -->
58
-
59
- <div id="logged-in-bar">
60
- <ul>
61
- <li><a href="/stef">My OnePage</a></li>
62
- <li><a href="/contacts">Contacts</a></li>
63
- <li><a href="/settings">Edit OnePage</a></li>
64
- <li><a href="/share">Share</a></li>
65
- <li><a href="/account">Account</a></li>
66
- <li><a href="/logout">Log Out</a></li>
67
- </ul>
68
- </div>
69
- <!-- end login bar -->
70
-
71
- </div>
72
- <div class="imabadperson"></div>
73
- <!-- start card -->
74
- <div id="card">
75
- <p id="edit-bar"><a id="edit-card" class="share right" href="/settings" title="Edit your OnePage"><img src="/images/silk-icons/pencil.png" /> Edit</a></p> <div id="card-container">
76
- <ul id="hcard-Firstname-Lastname" class="vcard shadow">
77
- <li class="avatar"><div id="photo"><img class="photo" src="http://static.myonepage.com/images/profiles/stef-thumb-1280252485.jpg" title="Photo of Stef Lewandowski" height="132" width="132"/></div></li>
78
- <li class="fn limit"><strong>Stef Lewandowski</strong></li>
79
- <li class="title limit">Chief Innovation Officer, All In Group</li>
80
- <li class="note limit">Create something every day.</li> <li>
81
- <ul id="details">
82
-
83
-
84
- <li class="odd twitter">
85
- <dl>
86
- <dd title="Twitter">Twitter:</dd>
87
- <dt title="stef" class="twitter"><a rel="784d6ba94b903ab5564a9bd3502b029b0aa88e83" rel="me" target="_blank" href="http://twitter.com/stef">stef</a></dt>
88
- </dl>
89
- </li>
90
-
91
-
92
-
93
- <li class="website">
94
- <dl>
95
- <dd title="Website">Website:</dd>
96
- <dt title="Stef Lewandowski | Create something every day" class="website"><a rel="046ca60a0b4c80ade5930c86aa2d67a4afef6233" rel="me" target="_blank" href="http://stef.io" class="url">Stef Lewandowski | Create something every day</a></dt>
97
- </dl>
98
- </li>
99
-
100
-
101
-
102
- <li class="odd location">
103
- <dl>
104
- <dd title="Location">Location:</dd>
105
- <dt title="London, UK" class="location locality">London, UK</dt>
106
- </dl>
107
- </li>
108
-
109
-
110
-
111
- <li class="linkedin">
112
- <dl>
113
- <dd title="LinkedIn">LinkedIn:</dd>
114
- <dt title="Stef Lewandowski" class="linkedin"><a rel="694e2380cb917dc817c26156f6496611e051f9ef" rel="me" target="_blank" href="http://www.linkedin.com/in/steflewandowski">Stef Lewandowski</a></dt>
115
- </dl>
116
- </li>
117
-
118
-
119
-
120
- <li class="odd email">
121
- <dl>
122
- <dd title="Email">Email:</dd>
123
- <dt title="Click to email Stef Lewandowski" class="email"><a rel="dc9b9d092c205be21ba35867cda6bb209a91825c" rel="me" target="_blank" href="/stef/email/dc9b9d092c205be21ba35867cda6bb209a91825c/1280252510">Click to email Stef Lewandowski</a></dt>
124
- </dl>
125
- </li>
126
-
127
-
128
-
129
- <li class="flickr">
130
- <dl>
131
- <dd title="Flickr">Flickr:</dd>
132
- <dt title="aeioux" class="flickr"><a rel="096b215e7861f3f03790f3413996a72086e437e5" rel="me" target="_blank" href="http://www.flickr.com/photos/aeioux">aeioux</a></dt>
133
- </dl>
134
- </li>
135
-
136
- </ul>
137
-
138
- </li>
139
- <li class="imabadperson"></li>
140
- </ul>
141
- <div id="card-back" class="hidden">
142
- <p></p>
143
- </div>
144
- </div>
145
- <p id="card_share">
146
- <a id="twitter_share" target="_blank" class="share" href="http://twitter.com/?status=Check out @stef's OnePage! http://myonepage.com/stef %23onepage" title="Share Stef Lewandowski's OnePage on Twitter"><img src="/images/services/twitter_16.png" /> Share</a>
147
- <a id="facebook_share" name="fb_share" type="icon_link" class="share" href="http://www.facebook.com/sharer.php" title="Share Stef Lewandowski's OnePage on Facebook"></a><script src="http://static.ak.fbcdn.net/connect.php/js/FB.Share" type="text/javascript"></script>
148
- <a id="random" class="share" href="/random" title="Jump to a random OnePage profile"><img src="/images/silk-icons/arrow_rotate_clockwise.png" /></a>
149
- <a id="embed_contact" class="share right" href="/stef/embed" title="Embed Stef Lewandowski's OnePage"><img src="/images/silk-icons/tag.png" /> Embed</a>
150
-
151
- </p>
152
- </div>
153
- <!-- end card -->
154
- <div id="footer-clear"></div>
155
- <div id="footer">
156
- <ul class="roundedgradientshadow">
157
- <li class="copyright">&copy; OnePage 2010</li>
158
- <li><a href="/about" title="About OnePage">About Us</a></li>
159
- <li><a href="/beta" title="Join the OnePage beta team">Beta Team</a></li>
160
- <li><a href="/press" title="Press FAQs">Press FAQs</a></li>
161
- <li><a href="http://blog.myonepage.com" title="Our blog about OnePage">Our Blog</a></li>
162
- <li><a href="http://onepage.uservoice.com" title="Find help and support or make suggestions for OnePage">Support &amp; Suggestions</a></li>
163
- <li><a href="/terms" title="Terms of use of OnePage">Terms</a></li>
164
- <li><a href="/privacy" title="Your privacy on OnePage">Privacy</a></li>
165
- </ul>
166
- </div>
167
- </div>
168
- <script type="text/javascript">
169
- //<![CDATA[
170
- var uservoiceJsHost = ("https:" == document.location.protocol) ? "https://uservoice.com" : "http://cdn.uservoice.com";
171
- document.write(unescape("%3Cscript src='" + uservoiceJsHost + "/javascripts/widgets/tab.js' type='text/javascript'%3E%3C/script%3E"))
172
- var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
173
- document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
174
- document.write(unescape('%3Cscript id="ki_loader" src="http' + ((document.location.protocol == 'https:') ? 's' : '') + '://s3.amazonaws.com/j.kissinsights.com/1.0/load.js?site=myonepage.com" type="text/javascript"%3E%3C/script%3E'));
175
- document.write(unescape("%3Cscript src='http://cdn.survey.io/embed/1.0/survey.js' type='text/javascript'%3E%3C/script%3E"));
176
- var mp_protocol = (('https:' == document.location.protocol) ? 'https://' : 'http://');
177
- document.write(unescape('%3Cscript src="' + mp_protocol + 'api.mixpanel.com/site_media/js/api/mixpanel.js" type="text/javascript"%3E%3C/script%3E'));
178
- //]]>
179
- </script>
180
- <script type="text/javascript">
181
- //<![CDATA[
182
- UserVoice.Popin.setup({
183
- key: 'onepage',
184
- host: 'onepage.uservoice.com',
185
- forum: 'general',
186
- lang: 'en'
187
- });
188
- try{
189
- var pageTracker = _gat._getTracker("UA-10039160-1");
190
- pageTracker._setDomainName(".myonepage.com");
191
- pageTracker._trackPageview();
192
- } catch(err){}
193
- KI.identify('stef');
194
- Surveyio.init({
195
- survey_id: "3c3fb",
196
- token: "f6b868e63553196255abe8016123f694364a5310",
197
- banner: {
198
- x: "right",
199
- y: "top",
200
- color: "green"
201
- }
202
- });
203
- Surveyio.set("username", "stef");
204
- try{
205
- var mpmetrics = new MixpanelLib('f147bce65eee669ec2c0d4bce26c535d');
206
- }
207
- catch(err){
208
- null_fn = function () {};
209
- var mpmetrics = {
210
- track: null_fn,
211
- track_funnel: null_fn,
212
- register: null_fn,
213
- register_once: null_fn,
214
- register_funnel: null_fn
215
- };
216
- }
217
- //]]>
218
- </script>
219
- </body>
220
- </html>