aphro 0.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.
Files changed (78) hide show
  1. data/.gitignore +6 -0
  2. data/.travis.yml +7 -0
  3. data/Gemfile +7 -0
  4. data/README.md +264 -0
  5. data/Rakefile +55 -0
  6. data/SPEC.md +17 -0
  7. data/aphro.gemspec +23 -0
  8. data/docs/.gitignore +0 -0
  9. data/docs/index.html +88 -0
  10. data/docs/lib/hateoas.html +88 -0
  11. data/docs/lib/hateoas/version.html +30 -0
  12. data/index.html +1 -0
  13. data/lib/client/aphro.rb +88 -0
  14. data/lib/server/.gitignore +69 -0
  15. data/lib/server/.rails_footnotes +3 -0
  16. data/lib/server/Gemfile +53 -0
  17. data/lib/server/README +261 -0
  18. data/lib/server/Rakefile +7 -0
  19. data/lib/server/app/assets/images/rails.png +0 -0
  20. data/lib/server/app/assets/javascripts/application.js +7 -0
  21. data/lib/server/app/assets/javascripts/jqueryui.js +406 -0
  22. data/lib/server/app/assets/javascripts/services.js.coffee +3 -0
  23. data/lib/server/app/assets/stylesheets/application.css +7 -0
  24. data/lib/server/app/assets/stylesheets/services.css.sass +3 -0
  25. data/lib/server/app/controllers/application_controller.rb +15 -0
  26. data/lib/server/app/controllers/services_controller.rb +5 -0
  27. data/lib/server/app/controllers/sessions_controller.rb +6 -0
  28. data/lib/server/app/helpers/application_helper.rb +2 -0
  29. data/lib/server/app/helpers/services_helper.rb +2 -0
  30. data/lib/server/app/mailers/.gitkeep +0 -0
  31. data/lib/server/app/models/.gitkeep +0 -0
  32. data/lib/server/app/views/layouts/application.html.erb +14 -0
  33. data/lib/server/app/views/services/index.html.haml +6 -0
  34. data/lib/server/app/views/sessions/index.html.haml +3 -0
  35. data/lib/server/config.ru +4 -0
  36. data/lib/server/config/application.rb +61 -0
  37. data/lib/server/config/boot.rb +6 -0
  38. data/lib/server/config/cucumber.yml +8 -0
  39. data/lib/server/config/environment.rb +5 -0
  40. data/lib/server/config/environments/development.rb +30 -0
  41. data/lib/server/config/environments/production.rb +60 -0
  42. data/lib/server/config/environments/test.rb +39 -0
  43. data/lib/server/config/initializers/backtrace_silencers.rb +7 -0
  44. data/lib/server/config/initializers/generators.rb +2 -0
  45. data/lib/server/config/initializers/inflections.rb +10 -0
  46. data/lib/server/config/initializers/mime_types.rb +5 -0
  47. data/lib/server/config/initializers/rails_footnotes.rb +5 -0
  48. data/lib/server/config/initializers/sass.rb +1 -0
  49. data/lib/server/config/initializers/secret_token.rb +7 -0
  50. data/lib/server/config/initializers/session_store.rb +8 -0
  51. data/lib/server/config/initializers/wrap_parameters.rb +14 -0
  52. data/lib/server/config/locales/en.yml +5 -0
  53. data/lib/server/config/routes.rb +60 -0
  54. data/lib/server/db/seeds.rb +7 -0
  55. data/lib/server/doc/README_FOR_APP +2 -0
  56. data/lib/server/features/demo_json_service.feature +14 -0
  57. data/lib/server/features/step_definitions/demo_json_services_steps.rb +10 -0
  58. data/lib/server/features/support/env.rb +51 -0
  59. data/lib/server/lib/assets/.gitkeep +0 -0
  60. data/lib/server/lib/tasks/.gitkeep +0 -0
  61. data/lib/server/lib/tasks/cucumber.rake +65 -0
  62. data/lib/server/public/404.html +26 -0
  63. data/lib/server/public/422.html +26 -0
  64. data/lib/server/public/500.html +26 -0
  65. data/lib/server/public/favicon.ico +0 -0
  66. data/lib/server/public/robots.txt +5 -0
  67. data/lib/server/script/cucumber +10 -0
  68. data/lib/server/script/rails +6 -0
  69. data/lib/server/spec/controllers/services_controller_spec.rb +9 -0
  70. data/lib/server/spec/spec_helper.rb +33 -0
  71. data/lib/server/vendor/assets/stylesheets/.gitkeep +0 -0
  72. data/lib/server/vendor/plugins/.gitkeep +0 -0
  73. data/lib/version.rb +3 -0
  74. data/spec/aphro_spec.rb +56 -0
  75. data/spec/fixtures/index.html.haml +1 -0
  76. data/spec/spec_helper.rb +1 -0
  77. data/tmp.html +1192 -0
  78. metadata +184 -0
@@ -0,0 +1,10 @@
1
+ When /^I make a GET request to the root$/ do
2
+ visit root_path
3
+ end
4
+
5
+ Then /^I should see the following links:$/ do |table|
6
+ table.rows.each do |row|
7
+ link, rel = *row
8
+ page.body.should include %(<a href="#{link}" rel="#{rel}")
9
+ end
10
+ end
@@ -0,0 +1,51 @@
1
+ # IMPORTANT: This file is generated by cucumber-rails - edit at your own peril.
2
+ # It is recommended to regenerate this file in the future when you upgrade to a
3
+ # newer version of cucumber-rails. Consider adding your own code to a new file
4
+ # instead of editing this one. Cucumber will automatically load all features/**/*.rb
5
+ # files.
6
+
7
+ require 'cucumber/rails'
8
+ require 'ruby-debug'
9
+
10
+ # Capybara defaults to XPath selectors rather than Webrat's default of CSS3. In
11
+ # order to ease the transition to Capybara we set the default here. If you'd
12
+ # prefer to use XPath just remove this line and adjust any selectors in your
13
+ # steps to use the XPath syntax.
14
+ Capybara.default_selector = :css
15
+
16
+ # By default, any exception happening in your Rails application will bubble up
17
+ # to Cucumber so that your scenario will fail. This is a different from how
18
+ # your application behaves in the production environment, where an error page will
19
+ # be rendered instead.
20
+ #
21
+ # Sometimes we want to override this default behaviour and allow Rails to rescue
22
+ # exceptions and display an error page (just like when the app is running in production).
23
+ # Typical scenarios where you want to do this is when you test your error pages.
24
+ # There are two ways to allow Rails to rescue exceptions:
25
+ #
26
+ # 1) Tag your scenario (or feature) with @allow-rescue
27
+ #
28
+ # 2) Set the value below to true. Beware that doing this globally is not
29
+ # recommended as it will mask a lot of errors for you!
30
+ #
31
+ ActionController::Base.allow_rescue = false
32
+
33
+ # Remove/comment out the lines below if your app doesn't have a database.
34
+ # For some databases (like MongoDB and CouchDB) you may need to use :truncation instead.
35
+ begin
36
+ DatabaseCleaner.strategy = :transaction
37
+ rescue NameError
38
+ raise "You need to add database_cleaner to your Gemfile (in the :test group) if you wish to use it."
39
+ end
40
+
41
+ # You may also want to configure DatabaseCleaner to use different strategies for certain features and scenarios.
42
+ # See the DatabaseCleaner documentation for details. Example:
43
+ #
44
+ # Before('@no-txn,@selenium,@culerity,@celerity,@javascript') do
45
+ # DatabaseCleaner.strategy = :truncation, {:except => %w[widgets]}
46
+ # end
47
+ #
48
+ # Before('~@no-txn', '~@selenium', '~@culerity', '~@celerity', '~@javascript') do
49
+ # DatabaseCleaner.strategy = :transaction
50
+ # end
51
+ #
File without changes
File without changes
@@ -0,0 +1,65 @@
1
+ # IMPORTANT: This file is generated by cucumber-rails - edit at your own peril.
2
+ # It is recommended to regenerate this file in the future when you upgrade to a
3
+ # newer version of cucumber-rails. Consider adding your own code to a new file
4
+ # instead of editing this one. Cucumber will automatically load all features/**/*.rb
5
+ # files.
6
+
7
+
8
+ unless ARGV.any? {|a| a =~ /^gems/} # Don't load anything when running the gems:* tasks
9
+
10
+ vendored_cucumber_bin = Dir["#{Rails.root}/vendor/{gems,plugins}/cucumber*/bin/cucumber"].first
11
+ $LOAD_PATH.unshift(File.dirname(vendored_cucumber_bin) + '/../lib') unless vendored_cucumber_bin.nil?
12
+
13
+ begin
14
+ require 'cucumber/rake/task'
15
+
16
+ namespace :cucumber do
17
+ Cucumber::Rake::Task.new({:ok => 'db:test:prepare'}, 'Run features that should pass') do |t|
18
+ t.binary = vendored_cucumber_bin # If nil, the gem's binary is used.
19
+ t.fork = true # You may get faster startup if you set this to false
20
+ t.profile = 'default'
21
+ end
22
+
23
+ Cucumber::Rake::Task.new({:wip => 'db:test:prepare'}, 'Run features that are being worked on') do |t|
24
+ t.binary = vendored_cucumber_bin
25
+ t.fork = true # You may get faster startup if you set this to false
26
+ t.profile = 'wip'
27
+ end
28
+
29
+ Cucumber::Rake::Task.new({:rerun => 'db:test:prepare'}, 'Record failing features and run only them if any exist') do |t|
30
+ t.binary = vendored_cucumber_bin
31
+ t.fork = true # You may get faster startup if you set this to false
32
+ t.profile = 'rerun'
33
+ end
34
+
35
+ desc 'Run all features'
36
+ task :all => [:ok, :wip]
37
+
38
+ task :statsetup do
39
+ require 'rails/code_statistics'
40
+ ::STATS_DIRECTORIES << %w(Cucumber\ features features) if File.exist?('features')
41
+ ::CodeStatistics::TEST_TYPES << "Cucumber features" if File.exist?('features')
42
+ end
43
+ end
44
+ desc 'Alias for cucumber:ok'
45
+ task :cucumber => 'cucumber:ok'
46
+
47
+ task :default => :cucumber
48
+
49
+ task :features => :cucumber do
50
+ STDERR.puts "*** The 'features' task is deprecated. See rake -T cucumber ***"
51
+ end
52
+
53
+ # In case we don't have ActiveRecord, append a no-op task that we can depend upon.
54
+ task 'db:test:prepare' do
55
+ end
56
+
57
+ task :stats => 'cucumber:statsetup'
58
+ rescue LoadError
59
+ desc 'cucumber rake task not available (cucumber not installed)'
60
+ task :cucumber do
61
+ abort 'Cucumber rake task is not available. Be sure to install cucumber as a gem or plugin'
62
+ end
63
+ end
64
+
65
+ end
@@ -0,0 +1,26 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>The page you were looking for doesn't exist (404)</title>
5
+ <style type="text/css">
6
+ body { background-color: #fff; color: #666; text-align: center; font-family: arial, sans-serif; }
7
+ div.dialog {
8
+ width: 25em;
9
+ padding: 0 4em;
10
+ margin: 4em auto 0 auto;
11
+ border: 1px solid #ccc;
12
+ border-right-color: #999;
13
+ border-bottom-color: #999;
14
+ }
15
+ h1 { font-size: 100%; color: #f00; line-height: 1.5em; }
16
+ </style>
17
+ </head>
18
+
19
+ <body>
20
+ <!-- This file lives in public/404.html -->
21
+ <div class="dialog">
22
+ <h1>The page you were looking for doesn't exist.</h1>
23
+ <p>You may have mistyped the address or the page may have moved.</p>
24
+ </div>
25
+ </body>
26
+ </html>
@@ -0,0 +1,26 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>The change you wanted was rejected (422)</title>
5
+ <style type="text/css">
6
+ body { background-color: #fff; color: #666; text-align: center; font-family: arial, sans-serif; }
7
+ div.dialog {
8
+ width: 25em;
9
+ padding: 0 4em;
10
+ margin: 4em auto 0 auto;
11
+ border: 1px solid #ccc;
12
+ border-right-color: #999;
13
+ border-bottom-color: #999;
14
+ }
15
+ h1 { font-size: 100%; color: #f00; line-height: 1.5em; }
16
+ </style>
17
+ </head>
18
+
19
+ <body>
20
+ <!-- This file lives in public/422.html -->
21
+ <div class="dialog">
22
+ <h1>The change you wanted was rejected.</h1>
23
+ <p>Maybe you tried to change something you didn't have access to.</p>
24
+ </div>
25
+ </body>
26
+ </html>
@@ -0,0 +1,26 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>We're sorry, but something went wrong (500)</title>
5
+ <style type="text/css">
6
+ body { background-color: #fff; color: #666; text-align: center; font-family: arial, sans-serif; }
7
+ div.dialog {
8
+ width: 25em;
9
+ padding: 0 4em;
10
+ margin: 4em auto 0 auto;
11
+ border: 1px solid #ccc;
12
+ border-right-color: #999;
13
+ border-bottom-color: #999;
14
+ }
15
+ h1 { font-size: 100%; color: #f00; line-height: 1.5em; }
16
+ </style>
17
+ </head>
18
+
19
+ <body>
20
+ <!-- This file lives in public/500.html -->
21
+ <div class="dialog">
22
+ <h1>We're sorry, but something went wrong.</h1>
23
+ <p>We've been notified about this issue and we'll take a look at it shortly.</p>
24
+ </div>
25
+ </body>
26
+ </html>
File without changes
@@ -0,0 +1,5 @@
1
+ # See http://www.robotstxt.org/wc/norobots.html for documentation on how to use the robots.txt file
2
+ #
3
+ # To ban all spiders from the entire site uncomment the next two lines:
4
+ # User-Agent: *
5
+ # Disallow: /
@@ -0,0 +1,10 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ vendored_cucumber_bin = Dir["#{File.dirname(__FILE__)}/../vendor/{gems,plugins}/cucumber*/bin/cucumber"].first
4
+ if vendored_cucumber_bin
5
+ load File.expand_path(vendored_cucumber_bin)
6
+ else
7
+ require 'rubygems' unless ENV['NO_RUBYGEMS']
8
+ require 'cucumber'
9
+ load Cucumber::BINARY
10
+ end
@@ -0,0 +1,6 @@
1
+ #!/usr/bin/env ruby
2
+ # This command will automatically be run when you run "rails" with Rails 3 gems installed from the root of your application.
3
+
4
+ APP_PATH = File.expand_path('../../config/application', __FILE__)
5
+ require File.expand_path('../../config/boot', __FILE__)
6
+ require 'rails/commands'
@@ -0,0 +1,9 @@
1
+ require 'spec_helper'
2
+
3
+ describe ServicesController do
4
+ it "returns headers with links to all the available services" do
5
+ get :index
6
+ response.headers["Link"].should ==
7
+ "Link: <//signup>; rel=\"signup\", <//signin>; rel=\"signin\""
8
+ end
9
+ end
@@ -0,0 +1,33 @@
1
+ # This file is copied to spec/ when you run 'rails generate rspec:install'
2
+ ENV["RAILS_ENV"] ||= 'test'
3
+ require File.expand_path("../../config/environment", __FILE__)
4
+ require 'rspec/rails'
5
+ require 'rspec/autorun'
6
+
7
+ # Requires supporting ruby files with custom matchers and macros, etc,
8
+ # in spec/support/ and its subdirectories.
9
+ Dir[Rails.root.join("spec/support/**/*.rb")].each {|f| require f}
10
+
11
+ RSpec.configure do |config|
12
+ # == Mock Framework
13
+ #
14
+ # If you prefer to use mocha, flexmock or RR, uncomment the appropriate line:
15
+ #
16
+ # config.mock_with :mocha
17
+ # config.mock_with :flexmock
18
+ # config.mock_with :rr
19
+ config.mock_with :rspec
20
+
21
+ # Remove this line if you're not using ActiveRecord or ActiveRecord fixtures
22
+ config.fixture_path = "#{::Rails.root}/spec/fixtures"
23
+
24
+ # If you're not using ActiveRecord, or you'd prefer not to run each of your
25
+ # examples within a transaction, remove the following line or assign false
26
+ # instead of true.
27
+ config.use_transactional_fixtures = true
28
+
29
+ # If true, the base class of anonymous controllers will be inferred
30
+ # automatically. This will be the default behavior in future versions of
31
+ # rspec-rails.
32
+ config.infer_base_class_for_anonymous_controllers = false
33
+ end
File without changes
@@ -0,0 +1,3 @@
1
+ class Aphro
2
+ VERSION = "0.0.1"
3
+ end
@@ -0,0 +1,56 @@
1
+ $:.unshift("lib/client")
2
+ $:.unshift("spec")
3
+ require 'spec_helper'
4
+ require 'haml'
5
+ require "aphro"
6
+
7
+ describe Aphro do
8
+ def view name
9
+ content = File.read "spec/fixtures/#{name}.html.haml"
10
+ Haml::Engine.new(content).render
11
+ end
12
+
13
+ let(:twitter) do
14
+ Aphro.client "http://localhost:3000/"
15
+ end
16
+
17
+ it "initializes with a site" do
18
+ ->{Aphro::Client.new "http://localhost:3000"}.should_not raise_error ArgumentError
19
+ ->{Aphro::Client.new }.should raise_error ArgumentError
20
+ end
21
+
22
+ describe "#actions" do
23
+ it "gets the next available actions in the current state" do
24
+ twitter.actions.should == {sign_up: {method: :get},
25
+ sign_in: {method: :post}}
26
+ end
27
+ end
28
+
29
+ describe "#attributes" do
30
+ it "returns the required attributes for an action" do
31
+ attributes = twitter.attributes_for :sign_in
32
+
33
+ attributes.should == %w(email password)
34
+ end
35
+ end
36
+
37
+ describe "#method_missing" do
38
+ it "responds to the current available actions" do
39
+ params = {email: "mark@example.com", password: "password"}
40
+ twitter.sign_in params
41
+ end
42
+
43
+ it "updates the state and available actions" do
44
+ params = {email: "mark@example.com", password: "password"}
45
+ twitter.sign_in params
46
+
47
+ twitter.actions.should == [read_messages: {method: :get},
48
+ tweet: {method: :post}]
49
+
50
+ end
51
+
52
+ it "raises a no method error" do
53
+ ->{twitter.imaginary_action}.should raise_error NoMethodError
54
+ end
55
+ end
56
+ end
@@ -0,0 +1 @@
1
+ %a(href="/login" rel="login")="Login"
@@ -0,0 +1 @@
1
+ #require 'webmock'
@@ -0,0 +1,1192 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2
+ <!--
3
+
4
+ . .o8 oooo
5
+ .o8 "888 `888
6
+ .o888oo oooo oooo ooo. .oo. .oo. 888oooo. 888 oooo d8b
7
+ 888 `888 `888 `888P"Y88bP"Y88b d88' `88b 888 `888""8P
8
+ 888 888 888 888 888 888 888 888 888 888
9
+ 888 . 888 888 888 888 888 888 888 888 888 .o.
10
+ "888" `V88V"V8P' o888o o888o o888o `Y8bod8P' o888o d888b Y8P
11
+
12
+ -->
13
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
14
+ <head>
15
+ <!-- DEFAULT VARIABLES -->
16
+ <meta name="color:Background" content="#3b627e" />
17
+
18
+ <meta name="font:Title" content="Arial" />
19
+ <meta name="font:Body" content="Arial" />
20
+ <meta name="font:Accent" content="Lucida Sans" />
21
+
22
+ <meta name="if:Show People I Follow" content="1" />
23
+ <meta name="if:Show Tags" content="1" />
24
+ <meta name="if:Show Album Art on Audio Posts" content="1" />
25
+ <meta name="if:Enable Jump Pagination" content="0" />
26
+
27
+ <meta name="text:Disqus Shortname" content="" />
28
+
29
+ <meta name="image:Header" content="" />
30
+ <meta name="image:Background" content="" />
31
+
32
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
33
+ <title>{Title}{block:SearchPage}, {lang:Search results for SearchQuery}{/block:SearchPage}{block:PostSummary}, {PostSummary}{/block:PostSummary}</title>
34
+ {block:Description}<meta name="description" content="{MetaDescription}" />{/block:Description}
35
+ <link rel="shortcut icon" href="{Favicon}" />
36
+ <link rel="apple-touch-icon" href="{PortraitURL-128}"/>
37
+ <link rel="alternate" type="application/rss+xml" href="{RSS}" />
38
+
39
+ <script type=text/javascript>
40
+ var gistPrefix = 'http://gist.github.com/',
41
+ // Cache document.write so that it can be restored once all Gists have been
42
+ // embedded.
43
+ cachedWrite = document.write,
44
+ body = $('body'),
45
+ // Map each p.gist to an object that contains the paragraph to be replaced
46
+ // and the Gist's identifier.
47
+ gists = $('p.gist').map(function(n, p) {
48
+ p = $(p);
49
+
50
+ var a = $('a', p),
51
+ href = a.attr('href');
52
+
53
+ // Only return the mapping if a valid a exists in the p.
54
+ if (a.length && href.indexOf(gistPrefix) == 0) {
55
+ return {
56
+ p: p,
57
+ id: href.substring(gistPrefix.length)
58
+ };
59
+ }
60
+ else {
61
+ return undefined;
62
+ }
63
+ }).get(),
64
+ embedNextGist = function() {
65
+ // If there are no more Gists to embed, restore document.write.
66
+ if (gists.length == 0) {
67
+ document.write = cachedWrite;
68
+ }
69
+ else {
70
+ var gist = gists.shift();
71
+
72
+ // The Gist javascript file consists of a call to document.write to
73
+ // write the stylesheet link element and a second call to
74
+ // document.write to write the div containing the marked up Gist.
75
+
76
+ // So, override document.write to catch the first call. And inside
77
+ // that override, override document.write again to catch the second
78
+ // call.
79
+
80
+ document.write = function(styleLink) {
81
+ // On my Tumblr page, I include GitHub's Gist stylesheet in my
82
+ // overall page template so nothing happens here. If you don't
83
+ // want to do that, you could do something here like
84
+ // $('head').append(styleLink);
85
+
86
+ document.write = function(gistDiv) {
87
+ // Replace the original paragraph with the formatted div
88
+ // written by the Gist javascript file.
89
+ gist.p.replaceWith(gistDiv);
90
+
91
+ embedNextGist();
92
+ };
93
+ };
94
+
95
+ body.append('<scr' + 'ipt src="' + gistPrefix + gist.id +
96
+ '.js"></scr' + 'ipt>');
97
+ }
98
+ };
99
+
100
+ // One call to embedNextGist to get the ball rolling.
101
+ embedNextGist();
102
+ </script>
103
+ <style type="text/css">
104
+ body {
105
+ background: {color:Background} url('{image:Background}') top left fixed repeat;
106
+ margin: 0;
107
+ padding: 0;
108
+ font-family: {font:Body};
109
+ }
110
+
111
+ .clear {
112
+ clear: both;
113
+ height: 0px;
114
+ overflow: hidden;
115
+ }
116
+
117
+ a img {
118
+ border: none;
119
+ }
120
+
121
+ #wrapper {
122
+ width: 845px;
123
+ margin: 0 auto;
124
+ }
125
+
126
+ #wrapper #title {
127
+ margin: 30px 0;
128
+ color: #fff;
129
+ font-size: 50px;
130
+ font-weight: bold;
131
+ font-family: {font:Title};
132
+ text-shadow: 1px 3px 5px rgba(0,0,0, 0.5);
133
+ letter-spacing: -1px;
134
+ }
135
+
136
+ #wrapper #title a {
137
+ color: #fff;
138
+ text-decoration: none;
139
+ }
140
+
141
+ #wrapper #content {
142
+ width: 520px;
143
+ float: left;
144
+ }
145
+
146
+ #wrapper #content .post {
147
+ font-family: {font:Body};
148
+ background: #fff;
149
+ padding: 10px;
150
+ position: relative;
151
+ }
152
+
153
+ #wrapper #content .post .media {
154
+ text-align: center;
155
+ margin-bottom: 10px;
156
+ }
157
+
158
+ #wrapper #content .post .quotebg {
159
+ font-family: georgia, serif;
160
+ font-size: 150px;
161
+ color: {color:Background};
162
+ opacity: 0.2;
163
+ filter: alpha(opacity=20);
164
+ -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=20)";
165
+ position: absolute;
166
+ top: 70px;
167
+ left: 10px;
168
+ }
169
+
170
+ #wrapper #content .post .quote {
171
+ color: {color:Background};
172
+ font-weight: bold;
173
+ padding: 20px 20px 5px 20px;
174
+ }
175
+
176
+ #wrapper #content .post .quote.short {
177
+ font-size: 33px;
178
+ line-height: 35px;
179
+ }
180
+
181
+ #wrapper #content .post .quote.medium {
182
+ font-size: 25px;
183
+ line-height: 28px;
184
+ }
185
+
186
+ #wrapper #content .post .quote.long {
187
+ font-size: 18px;
188
+ line-height: 22px;
189
+ }
190
+
191
+ #wrapper #content .post .quote_source *:first-child {
192
+ margin-top: 0px;
193
+ }
194
+
195
+ #wrapper #content .post .quote_source *:last-child {
196
+ margin-bottom: 0px;
197
+ }
198
+
199
+ #wrapper #content .post .quote *:first-child {
200
+ margin-top: 0px;
201
+ }
202
+
203
+ #wrapper #content .post .quote *:last-child {
204
+ margin-bottom: 0px;
205
+ }
206
+
207
+ #wrapper #content .post .copy {
208
+ color: #6e7173;
209
+ padding: 10px;
210
+ font-size: 13px;
211
+ line-height: 15px;
212
+ }
213
+
214
+ #wrapper #content .post .copy a {
215
+ color: #6e7173;
216
+ text-decoration: underline;
217
+ }
218
+
219
+ #wrapper #content .post .copy p {
220
+ margin: 10px 0 0 0;
221
+ padding: 0;
222
+ }
223
+
224
+ #wrapper #content .post .copy pre {
225
+ margin: 10px 0px 10px 0px;
226
+ padding: 10px;
227
+ background-color: #e6e6e6;
228
+ font: normal 11px Courier, monospace;
229
+ overflow: auto;
230
+ }
231
+
232
+ #wrapper #content .post .copy > p:first-child {
233
+ margin-top: 0;
234
+ }
235
+
236
+ #wrapper #content .post .copy img {
237
+ max-width: 100%;
238
+ }
239
+
240
+ #wrapper #content .post .audio {
241
+ background: #eaeaea;
242
+ float: left;
243
+ padding: 7px;
244
+ margin-bottom: 10px;
245
+ -moz-border-radius: 4px;
246
+ -webkit-border-radius: 4px;
247
+ border-radius: 4px;
248
+ }
249
+
250
+ #wrapper #content .post .audio .player {
251
+ float: left;
252
+ }
253
+
254
+ #wrapper #content .post .audio .player .audio_player embed {
255
+ border: 1px solid #c8c8c8;
256
+ }
257
+
258
+ #wrapper #content .post .audio .meta {
259
+ padding: 8px 13px;
260
+ height: 13px;
261
+ float: left;
262
+ color: #666;
263
+ font-family: {font:Accent};
264
+ font-size: 11px;
265
+ text-transform: lowercase;
266
+ }
267
+
268
+ #wrapper #content .post .audio .meta a {
269
+ color: #666;
270
+ text-decoration: none;
271
+ }
272
+
273
+ #wrapper #content .post .album_art {
274
+ text-align: center;
275
+ }
276
+
277
+ #wrapper #content .post .question {
278
+ color: #494949;
279
+ font-size: 16px;
280
+ font-weight: bold;
281
+ background: #f1f1f1;
282
+ -moz-border-radius: 8px;
283
+ -webkit-border-radius: 8px;
284
+ border-radius: 8px;
285
+ margin: 0 0 15px 0;
286
+ padding: 15px 20px;
287
+ position: relative;
288
+ }
289
+
290
+ #wrapper #content .post .question .nipple {
291
+ width: 13px;
292
+ height: 7px;
293
+ background: #f1f1f1 url('http://assets.tumblr.com/themes/redux/ask-mask.png');
294
+ position: absolute;
295
+ bottom: -7px;
296
+ left: 30px;
297
+ }
298
+
299
+ #wrapper #content .post .asker_container {
300
+ margin: 0 0 20px 24px;
301
+ }
302
+
303
+ #wrapper #content .post .asker_container img {
304
+ margin: 0 12px -7px 0;
305
+ }
306
+
307
+ #wrapper #content .post .asker_container a.asker {
308
+ color: {color:Body};
309
+ }
310
+
311
+ #wrapper #content .post .title {
312
+ color: #494949;
313
+ font-size: 16px;
314
+ font-weight: bold;
315
+ padding: 10px 10px 0 10px;
316
+ }
317
+
318
+ #wrapper #content .post img {
319
+ max-width: 500px;
320
+ }
321
+
322
+ #wrapper #content .post .chat {
323
+ background-color: #fff;
324
+ border-left: 5px solid #dedddd;
325
+ margin: 10px 10px 0 10px;
326
+ font-size: 14px;
327
+ }
328
+
329
+ #wrapper #content .post .chat .lines {
330
+ margin-left: 1px;
331
+ }
332
+
333
+ #wrapper #content .post .chat .lines .line {
334
+ background-color: #eaeaea;
335
+ color: #494949;
336
+ margin-bottom: 1px;
337
+ padding: 3px 5px;
338
+ }
339
+
340
+ #wrapper #content .post .chat .lines .line.even {
341
+ background-color: #dedddd;
342
+ }
343
+
344
+ #wrapper #content .post .link {
345
+ margin: 4px 0 2px 0;
346
+ font-size: 16px;
347
+ line-height: 25px;
348
+ }
349
+
350
+ #wrapper #content .post .link a {
351
+ background-color: {color:Background};
352
+ color: #fff;
353
+ padding: 5px 7px;
354
+ -moz-border-radius: 4px;
355
+ -webkit-border-radius: 4px;
356
+ border-radius: 4px;
357
+ }
358
+
359
+ #wrapper #content .post .link a:hover {
360
+ opacity: 0.9;
361
+ filter: alpha(opacity=90);
362
+ -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=90)";
363
+ }
364
+
365
+ #wrapper #content .post .footer {
366
+ background: #eaeaea;
367
+ -moz-border-radius: 4px;
368
+ -webkit-border-radius: 4px;
369
+ border-radius: 4px;
370
+ font-family: {font:Accent};
371
+ font-size: 11px;
372
+ color: #666;
373
+ padding: 5px 10px;
374
+ margin-top: 10px;
375
+ }
376
+
377
+ #wrapper #content .post .footer.for_permalink:hover {
378
+ opacity: 0.9;
379
+ filter: alpha(opacity=90);
380
+ -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=90)";
381
+ }
382
+
383
+ #wrapper #content .post .footer .date {
384
+ width: 67%;
385
+ float: left;
386
+ color: #666;
387
+ }
388
+
389
+ #wrapper #content .post .footer .notes {
390
+ width: 33%;
391
+ float: right;
392
+ text-align: right;
393
+ color: #666;
394
+ }
395
+
396
+ #wrapper #content .post .footer .notes a {
397
+ color: #666;
398
+ }
399
+
400
+ #wrapper #content .post .footer .tags a {
401
+ color: #4a4a51;
402
+ text-decoration: underline;
403
+ }
404
+
405
+ #wrapper #content .post .footer .tags .tag-commas:last-child {
406
+ display: none;
407
+ }
408
+
409
+ #wrapper #content .post .footer.with_source_url .tags {
410
+ max-width: 330px;
411
+ float: left;
412
+ }
413
+
414
+ #wrapper #content .post .footer.with_source_url .source_url {
415
+ float: right;
416
+ max-width: 160px;
417
+ overflow: hidden;
418
+ white-space: nowrap;
419
+
420
+ }
421
+
422
+ #wrapper #content .post .footer.with_source_url .source_url img {
423
+ vertical-align: top;
424
+ -moz-opacity: 0.5;
425
+ opacity: 0.5;
426
+ }
427
+
428
+ #wrapper #content .post .footer.with_source_url .source_url:hover img {
429
+ -moz-opacity: 0.7;
430
+ opacity: 0.7;
431
+ }
432
+
433
+ #wrapper #content .post a {
434
+ color: #6e7173;
435
+ text-decoration: none;
436
+ }
437
+
438
+ #wrapper #content .post .copy blockquote {
439
+ margin: 10px 0px 10px 10px;
440
+ padding-left: 15px;
441
+ border-left: solid 4px #dcdcdc;
442
+ }
443
+
444
+ #wrapper #content .post .copy blockquote blockquote {
445
+ border-left: solid 4px #cccccc;
446
+ }
447
+
448
+ #wrapper #content .post .copy blockquote blockquote blockquote {
449
+ border-left: solid 4px #bcbcbc;
450
+ }
451
+
452
+ #wrapper #content .post .copy blockquote blockquote blockquote blockquote {
453
+ border-left: solid 4px #acacac;
454
+ }
455
+
456
+ #wrapper #content .post .copy blockquote blockquote blockquote blockquote blockquote {
457
+ border-left: solid 4px #9c9c9c;
458
+ }
459
+
460
+ #wrapper #content .post .copy blockquote blockquote blockquote blockquote blockquote blockquote {
461
+ border-left: solid 4px #8c8c8c;
462
+ }
463
+
464
+ #wrapper #content .bottom {
465
+ background: url('http://assets.tumblr.com/themes/redux/shadow-post.png') top center no-repeat transparent;
466
+ width: 513px;
467
+ height: 40px;
468
+ margin: 0 auto;
469
+ }
470
+
471
+ #wrapper #content #navigation {
472
+ text-align: right;
473
+ padding-bottom: 35px;
474
+ text-transform: lowercase;
475
+ }
476
+
477
+ #wrapper #content #navigation a {
478
+ background-color: #fff;
479
+ color: {color:Background};
480
+ padding: 5px 10px;
481
+ text-decoration: none;
482
+ margin-left: 25px;
483
+ }
484
+
485
+ #wrapper #content #navigation a:hover {
486
+ opacity: 0.9;
487
+ filter: alpha(opacity=90);
488
+ -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=90)";
489
+ }
490
+
491
+ #wrapper #content #navigation.jump_pagination {}
492
+
493
+ #wrapper #content #navigation.jump_pagination a {
494
+ margin: 0 0 0 4px;
495
+ }
496
+
497
+ #wrapper #content #navigation.jump_pagination .current_page {
498
+ color: #fff;
499
+ background-color: rgba(255,255,255, 0.1);
500
+ border: 2px solid #fff;
501
+ padding: 3px 8px;
502
+ margin: 0 0 0 4px;
503
+ cursor: default;
504
+ }
505
+
506
+ #wrapper #content #navigation.jump_pagination .jump_page {}
507
+
508
+ #wrapper #content .post .notecontainer {
509
+ background: #eaeaea;
510
+ -moz-border-radius: 4px;
511
+ -webkit-border-radius: 4px;
512
+ border-radius: 4px;
513
+ font-family: {font:Accent};
514
+ font-size: 11px;
515
+ color: #666;
516
+ margin-top: 10px;
517
+ margin-bottom: -10px;
518
+ }
519
+
520
+ #wrapper #content .post .notecontainer a {
521
+ color: #666;
522
+ text-decoration: underline;
523
+ }
524
+
525
+ #wrapper #content .post .notecontainer ol.notes {
526
+ padding: 0px 0 10px 0;
527
+ list-style-type: none;
528
+ font-size: 11px;
529
+ }
530
+
531
+ #wrapper #content .post .notecontainer ol.notes li.note {
532
+ padding: 10px 10px 0 10px;
533
+ }
534
+
535
+ #wrapper #content .post .notecontainer ol.notes li.note img.avatar {
536
+ vertical-align: -4px;
537
+ margin-right: 10px;
538
+ width: 16px;
539
+ height: 16px;
540
+ }
541
+
542
+ #wrapper #content .post .notecontainer ol.notes li.note span.action {
543
+ font-weight: normal;
544
+ }
545
+
546
+ #wrapper #content .post .notecontainer ol.notes li.note .answer_content {
547
+ font-weight: normal;
548
+ }
549
+
550
+ #wrapper #content .post .notecontainer ol.notes li.note blockquote {
551
+ border-left: 2px solid #666;
552
+ padding: 4px 10px;
553
+ margin: 10px 0px 0px 25px;
554
+ }
555
+
556
+ #wrapper #content .post .notecontainer ol.notes li.note blockquote a {
557
+ text-decoration: none;
558
+ }
559
+
560
+ #wrapper #content #searchresults {
561
+ color: #fff;
562
+ margin: 0 0 15px 0;
563
+ text-shadow: 1px 3px 5px rgba(0,0,0, 0.5);
564
+ font-family: {font:Body};
565
+ font-size: 20px;
566
+ }
567
+
568
+ #wrapper #content #searchresults .search_query {
569
+ font-weight: bold;
570
+ }
571
+
572
+ #wrapper #content #searchresults .search_query:before {
573
+ content:'“';
574
+ }
575
+
576
+ #wrapper #content #searchresults .search_query:after {
577
+ content:'”';
578
+ }
579
+
580
+ #wrapper #sidebar {
581
+ width: 250px;
582
+ float: right;
583
+ color: {color:Background};
584
+ font-family: {font:Accent}
585
+ }
586
+
587
+ #wrapper #sidebar a {
588
+ color: {color:Background};
589
+ }
590
+
591
+ #wrapper #sidebar #top {
592
+ background: #fff;
593
+ padding: 0 20px;
594
+
595
+ -webkit-border-top-left-radius: 10px;
596
+ -webkit-border-top-right-radius: 10px;
597
+ -moz-border-radius-topleft: 10px;
598
+ -moz-border-radius-topright: 10px;
599
+ border-top-left-radius: 10px;
600
+ border-top-right-radius: 10px;
601
+ }
602
+
603
+ #wrapper #sidebar #top #avatar {
604
+ width: 146px;
605
+ height: 146px;
606
+ padding: 8px 0 0 9px;
607
+ background: url('http://assets.tumblr.com/themes/redux/avatar-bg.png') top left no-repeat transparent;
608
+ position: relative;
609
+ top: -24px;
610
+ left: -5px;
611
+ }
612
+
613
+ #wrapper #sidebar #top #pages {
614
+ margin-bottom: 15px;
615
+ font-size: 12px;
616
+ }
617
+
618
+ #wrapper #sidebar #top #pages.ask_and_submit {
619
+ display: none;
620
+ {block:AskEnabled}display: block;{/block:AskEnabled}
621
+ {block:SubmissionsEnabled}display: block;{/block:SubmissionsEnabled}
622
+ }
623
+
624
+ #wrapper #sidebar #top #pages a.page {
625
+ display: block;
626
+ float: left;
627
+ background-color: {color:Background};
628
+ color: #fff;
629
+ padding: 4px 5px;
630
+ margin: 0 5px 5px 0;
631
+ -webkit-border-radius: 3px;
632
+ -moz-border-radius: 3px;
633
+ border-radius: 3px;
634
+ }
635
+
636
+ #wrapper #sidebar #top #pages a.page:last-child {
637
+ margin-right: 0;
638
+ }
639
+
640
+ #wrapper #sidebar #top #pages a.page:hover {
641
+ opacity: 0.9;
642
+ filter: alpha(opacity=90);
643
+ -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=90)";
644
+ }
645
+
646
+ #wrapper #sidebar #top #description {
647
+ font-size: 11px;
648
+ position: relative;
649
+ top: -18px;
650
+ }
651
+
652
+ #wrapper #sidebar #top #description a {
653
+ color: {color:Background};
654
+ text-decoration: underline;
655
+ }
656
+
657
+ #wrapper #sidebar #top #search {
658
+ background: #fff;
659
+ border: 1px solid {color:Background};
660
+
661
+ -moz-border-radius: 4px;
662
+ -webkit-border-radius: 4px;
663
+ border-radius: 4px;
664
+ }
665
+
666
+ #wrapper #sidebar #top #search-scope {
667
+ padding-top: 5px;
668
+ font-size: 11px;
669
+ text-align: center;
670
+ }
671
+
672
+ #wrapper #sidebar #top #search-scope input,
673
+ #wrapper #sidebar #top #search-scope label {
674
+ cursor: pointer;
675
+ }
676
+
677
+ #wrapper #sidebar #top #search form {
678
+ margin: 0;
679
+ }
680
+
681
+ #wrapper #sidebar #top #search form .query {
682
+ padding: 5px;
683
+ border: none;
684
+ background: transparent;
685
+ outline: none;
686
+ width: 125px;
687
+ float: left;
688
+ color: {color:Background};
689
+ }
690
+
691
+ #wrapper #sidebar #top #search form .submit {
692
+ background: {color:Background};
693
+ color: #fff;
694
+ border: none;
695
+ padding: 5px 7px;
696
+ margin: 3px 3px 2px 0;
697
+ float: right;
698
+ -moz-border-radius: 3px;
699
+ -webkit-border-radius: 3px;
700
+ border-radius: 3px;
701
+ cursor: pointer;
702
+ }
703
+
704
+ #wrapper #sidebar #top #search form .submit:hover {
705
+ opacity: 0.9;
706
+ filter: alpha(opacity=90);
707
+ -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=90)";
708
+ }
709
+
710
+ #wrapper #sidebar #top .heading {
711
+ color: #fff;
712
+ font-family: helvetica, arial, sans-serif;
713
+ font-size: 17px;
714
+ margin-top: 20px;
715
+ padding: 10px;
716
+ background-color: {color:Background};
717
+ -webkit-border-top-left-radius: 4px;
718
+ -webkit-border-top-right-radius: 4px;
719
+ -moz-border-radius-topleft: 4px;
720
+ -moz-border-radius-topright: 4px;
721
+ border-top-left-radius: 4px;
722
+ border-top-right-radius: 4px;
723
+ }
724
+
725
+ #wrapper #sidebar #top a .heading {
726
+ color: #fff;
727
+ text-decoration: none;
728
+ }
729
+
730
+ #wrapper #sidebar #top .heading#followontumblr {
731
+ background: url('http://assets.tumblr.com/themes/redux/sidebar-follow-on-en_US.png') center left no-repeat {color:Background};
732
+ text-indent: -9999px;
733
+ -moz-border-radius: 4px;
734
+ -webkit-border-radius: 4px;
735
+ border-radius: 4px;
736
+
737
+ {block:German}
738
+ background-image: url('http://assets.tumblr.com/themes/redux/sidebar-follow-on-de_DE.png');
739
+ {/block:German}
740
+
741
+ {block:Japanese}
742
+ background-image: url('http://assets.tumblr.com/themes/redux/sidebar-follow-on-ja_JP.png');
743
+ {/block:Japanese}
744
+
745
+ {block:Italian}
746
+ background-image: url('http://assets.tumblr.com/themes/redux/sidebar-follow-on-it_IT.png');
747
+ {/block:Italian}
748
+
749
+ {block:French}
750
+ background-image: url('http://assets.tumblr.com/themes/redux/sidebar-follow-on-fr_FR.png');
751
+ {/block:French}
752
+ }
753
+
754
+ #wrapper #sidebar #top .heading#followontumblr:hover,
755
+ #wrapper #sidebar #top .heading#twitter:hover {
756
+ opacity: 0.9;
757
+ filter: alpha(opacity=90);
758
+ -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=90)";
759
+ }
760
+
761
+ #wrapper #sidebar #top .heading#twitter {
762
+ background: url('http://assets.tumblr.com/themes/redux/sidebar-twitter.png') right center no-repeat {color:Background};
763
+ }
764
+
765
+ #wrapper #sidebar #top .heading#following {
766
+ background: url('http://assets.tumblr.com/themes/redux/sidebar-following.png') right center no-repeat {color:Background};
767
+ }
768
+
769
+ #wrapper #sidebar #top .content {
770
+ margin-top: 2px;
771
+ padding: 7px 10px;
772
+ background: #eaeaea;
773
+ color: #666;
774
+ font-size: 11px;
775
+ overflow: hidden;
776
+ }
777
+
778
+ #wrapper #sidebar #top a {
779
+ text-decoration: none;
780
+ }
781
+
782
+ #wrapper #sidebar #top #following-avatars.content {
783
+ padding: 4px;
784
+ }
785
+
786
+ #wrapper #sidebar #top #following-avatars.content a img {
787
+ margin: 5px;
788
+ }
789
+
790
+ #wrapper #sidebar #top #buttons {
791
+ padding: 20px 0 0 0;
792
+ }
793
+
794
+ #wrapper #sidebar #top #buttons .button {
795
+ width: 35%;
796
+ height: 21px;
797
+ float: left;
798
+ background: left center no-repeat transparent;
799
+ padding: 2px 0 0 30px;
800
+ font-size: 14px;
801
+ }
802
+
803
+ #wrapper #sidebar #top #buttons a {
804
+ color: {color:Background};
805
+ text-decoration: none;
806
+ }
807
+
808
+ #wrapper #sidebar #top #buttons div {
809
+ padding-bottom: 10px;
810
+ }
811
+
812
+ #wrapper #sidebar #top #buttons .button#button-rss {
813
+ background-image: url('http://assets.tumblr.com/themes/redux/button-rss.png?2');
814
+ text-transform: capitalize;
815
+ }
816
+
817
+ #wrapper #sidebar #top #buttons .button#button-random {
818
+ background-image: url('http://assets.tumblr.com/themes/redux/button-random.png?2');
819
+ }
820
+
821
+ #wrapper #sidebar #top #buttons .button#button-archive {
822
+ background-image: url('http://assets.tumblr.com/themes/redux/button-archive.png?2');
823
+ }
824
+
825
+ #wrapper #sidebar #top #buttons .button#button-mobile {
826
+ background-image: url('http://assets.tumblr.com/themes/redux/button-mobile.png?2');
827
+ }
828
+
829
+ #wrapper #sidebar #bottom {
830
+ background: url('http://assets.tumblr.com/themes/redux/sidebar-bottom.png') top center no-repeat transparent;
831
+ width: 250px;
832
+ height: 25px;
833
+ }
834
+
835
+ #wrapper #sidebar #copyright {
836
+ text-align: center;
837
+ color: #fff;
838
+ font-size: 12px;
839
+ margin-bottom: 10px;
840
+ }
841
+
842
+ #wrapper #sidebar #copyright a {
843
+ color: #fff;
844
+ margin-left: 15px;
845
+ }
846
+
847
+ </style>
848
+ <!--[if lt IE 7.]>
849
+ <style type="text/css">
850
+ #wrapper #sidebar #bottom {
851
+ background: transparent;
852
+ }
853
+
854
+ #wrapper #sidebar #top #avatar {
855
+ background: none;
856
+ }
857
+
858
+ #wrapper #sidebar #top #avatar img {
859
+ border: 5px solid #f1f1f1;
860
+ }
861
+
862
+ #wrapper #sidebar #top .heading#followontumblr {
863
+ background-image: none;
864
+ text-indent: 0;
865
+ }
866
+
867
+ #wrapper #sidebar #top .heading#twitter {
868
+ background-image: none;
869
+ }
870
+
871
+ #wrapper #sidebar #top .heading#following {
872
+ background-image: none;
873
+ }
874
+
875
+ #wrapper #content .post .audio .player {
876
+ float: none;
877
+ }
878
+
879
+ #wrapper #content .post .audio .meta {
880
+ display: none;
881
+ float: none;
882
+ }
883
+ </style>
884
+ <![endif]-->
885
+
886
+ <!--[if lt IE 8.]>
887
+ <style type="text/css">
888
+ #wrapper #content .bottom {
889
+ background: transparent;
890
+ }
891
+
892
+ #wrapper #content .post .footer {
893
+ background: transparent;
894
+ color: #000;
895
+ }
896
+
897
+ #wrapper #content .post .audio {
898
+ float: none;
899
+ background: transparent;
900
+ }
901
+
902
+ #wrapper #content .post .notecontainer .notes {
903
+ padding: 0;
904
+ margin: 0;
905
+ }
906
+ </style>
907
+ <![endif]-->
908
+ <style type="text/css">{CustomCSS}</style>
909
+ </head>
910
+ <body>
911
+ <div id="wrapper">
912
+ <div id="title">
913
+ <a href="/">
914
+ {block:IfHeaderImage}<img src="{image:Header}" />{/block:IfHeaderImage}
915
+ {block:IfNotHeaderImage}{Title}{/block:IfNotHeaderImage}
916
+ </a>
917
+ </div>
918
+
919
+ <div id="content">
920
+
921
+ {block:SearchPage}
922
+ {block:SearchResults}
923
+ <div id="searchresults">{lang:SearchResultCount results for SearchQuery 2}</div>
924
+ {/block:SearchResults}
925
+
926
+ {block:NoSearchResults}
927
+ <div id="searchresults">{lang:No search results for SearchQuery 2}</div>
928
+ {/block:NoSearchResults}
929
+ {/block:SearchPage}
930
+
931
+ {block:Posts}
932
+ <div class="post">
933
+
934
+ {block:Photo}
935
+ <div class="media">{LinkOpenTag}<img src="{PhotoURL-500}" alt="{PhotoAlt}" />{LinkCloseTag}</div>
936
+ {block:Caption}<div class="copy">{Caption}</div>{/block:Caption}
937
+ {/block:Photo}
938
+
939
+ {block:Video}
940
+ <div class="media">{Video-500}</div>
941
+ {block:Caption}<div class="copy">{Caption}</div>{/block:Caption}
942
+ {/block:Video}
943
+
944
+ {block:Audio}
945
+ {block:IfShowAlbumArtOnAudioPosts}
946
+ {block:AlbumArt}
947
+ <div class="album_art">
948
+ <img src="{AlbumArtURL}" alt="{block:Artist}{Artist}{/block:Artist}{block:TrackName} - {TrackName}{/block:TrackName}" style="margin-bottom:10px;" />
949
+ </div>
950
+ {/block:AlbumArt}
951
+ {/block:IfShowAlbumArtOnAudioPosts}
952
+
953
+ <div class="audio">
954
+ <div class="player">{AudioPlayerWhite}</div>
955
+ <div class="meta">{PlayCountWithLabel}{block:ExternalAudio}<span class="download_external_audio"> &bull; <a href="{ExternalAudioURL}">{lang:Download}</a></span>{/block:ExternalAudio}</div>
956
+ <div class="clear"></div>
957
+ </div>
958
+ <div class="clear"></div>
959
+ {block:Caption}<div class="copy">{Caption}</div>{/block:Caption}
960
+ {/block:Audio}
961
+
962
+ {block:Quote}
963
+ <div class="quote {Length}">{Quote}</div>
964
+ <div class="copy">
965
+ <div class="quotebg">“</div>
966
+ {block:Source}
967
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
968
+ <tr>
969
+ <td valign="top" style="width:20px;">&mdash;</td>
970
+ <td valign="top" class="quote_source">
971
+ {Source}
972
+ </td>
973
+ </tr>
974
+ </table>
975
+ {/block:Source}
976
+ </div>
977
+ {/block:Quote}
978
+
979
+ {block:Text}
980
+ {block:Title}<div class="title">{Title}</div>{/block:Title}
981
+ <div class="copy">{Body}</div>
982
+ {/block:Text}
983
+
984
+ {block:Answer}
985
+ <div class="question">
986
+ <div class="nipple"></div>
987
+ {Question}
988
+ </div>
989
+ <div class="asker_container"><img src="{AskerPortraitURL-24}">{Asker}</div>
990
+ <div class="copy">{Answer}</div>
991
+ {block:Answer}
992
+
993
+ {block:Chat}
994
+ {block:Title}<div class="title">{Title}</div>{/block:Title}
995
+ <div class="chat">
996
+ <div class="lines">
997
+ {block:Lines}
998
+ <div class="line {Alt}">{block:Label}<strong>{Label}</strong>{/block:Label} {Line}</div>
999
+ {/block:Lines}
1000
+ </div>
1001
+ </div>
1002
+ <div class="clear"></div>
1003
+ <div style="height:10px;"></div>
1004
+ {/block:Chat}
1005
+
1006
+ {block:Link}
1007
+ <div class="link"><a href="{URL}" {Target}>{Name} &raquo;</a></div>
1008
+ {block:Description}<div class="copy">{Description}</div>{/block:Description}
1009
+ {/block:Link}
1010
+
1011
+ {block:Date}
1012
+ <a href="{Permalink}">
1013
+ <div class="footer for_permalink">
1014
+ <div class="date">
1015
+ {block:Reblog}
1016
+ {lang:Reblogged TimeAgo from ReblogParentName} {block:RebloggedFromReblog}(<span style="text-transform:lowercase;">{lang:Originally from ReblogRootName}</span>){/block:RebloggedFromReblog}
1017
+ {/block:Reblog}
1018
+
1019
+ {block:NotReblog}
1020
+ {lang:Posted TimeAgo from source}
1021
+ {/block:NotReblog}
1022
+ </div>
1023
+ <div class="notes">{block:NoteCount}{NoteCountWithLabel}{/block:NoteCount} {block:IfDisqusShortname}{block:NoteCount}&bull;{/block:NoteCount} <a href="{Permalink}#disqus_thread">{lang:View comments}</a>{/block:IfDisqusShortname}</div>
1024
+ <div class="clear"></div>
1025
+ </div>
1026
+ </a>
1027
+ {/block:Date}
1028
+
1029
+ <div class="footer {block:ContentSource}with_source_url{/block:ContentSource}" style="
1030
+ display:none;
1031
+ {block:IfShowTags}{block:HasTags}display:block;{/block:HasTags}{/block:IfShowTags}
1032
+ {block:ContentSource}display:block;{/block:ContentSource}
1033
+ ">
1034
+ {block:IfShowTags}
1035
+ {block:HasTags}<div class="tags">{lang:Tagged}: {block:Tags}<a href="{TagURL}">{Tag}</a><span class="tag-commas">, </span>{/block:Tags}.</div>{/block:HasTags}
1036
+ {/block:IfShowTags}
1037
+
1038
+ {block:ContentSource}
1039
+ <a href="{SourceURL}" class="source_url">
1040
+ {lang:Source}:
1041
+ {block:SourceLogo}<img src="{BlackLogoURL}" width="{LogoWidth}" height="{LogoHeight}" alt="{SourceTitle}" />{/block:SourceLogo}
1042
+ {block:NoSourceLogo}{SourceTitle}{/block:NoSourceLogo}
1043
+ </a>
1044
+ {/block:ContentSource}
1045
+
1046
+ <div class="clear"></div>
1047
+ </div>
1048
+
1049
+ {block:PostNotes}<div class="notecontainer">{PostNotes}</div>{/block:PostNotes}
1050
+
1051
+ {block:IfDisqusShortname}
1052
+ {block:Permalink}
1053
+ <div class="notecontainer" style="margin:20px 0 1px 0; padding:1px 10px 10px 10px;">
1054
+ <div id="disqus_thread"></div>
1055
+ <script type="text/javascript" src="http://disqus.com/forums/{text:Disqus Shortname}/embed.js"></script>
1056
+ <noscript><a href="http://{text:Disqus Shortname}.disqus.com/?url=ref">{lang:View the discussion thread}</a></noscript>
1057
+ </div>
1058
+ <div style="text-align:right; margin-top:5px;">
1059
+ {lang:Blog comments powered by Disqus 2}
1060
+ </div>
1061
+ {/block:Permalink}
1062
+ {/block:IfDisqusShortname}
1063
+
1064
+ </div>
1065
+ <div class="bottom"></div>
1066
+ {/block:Posts}
1067
+
1068
+ {block:Pagination}
1069
+ <div id="navigation" {block:IfEnableJumpPagination}class="jump_pagination"{/block:IfEnableJumpPagination}>
1070
+ {block:PreviousPage}<a href="{PreviousPage}">&larr; {lang:Previous}</a>{/block:PreviousPage}
1071
+
1072
+ {block:IfEnableJumpPagination}
1073
+ {block:JumpPagination length="5"}
1074
+ {block:CurrentPage}
1075
+ <span class="current_page">{PageNumber}</span>
1076
+ {/block:CurrentPage}
1077
+
1078
+ {block:JumpPage}
1079
+ <a class="jump_page" href="{URL}">{PageNumber}</a>
1080
+ {/block:JumpPage}
1081
+
1082
+ {/block:JumpPagination}
1083
+ {/block:IfEnableJumpPagination}
1084
+
1085
+ {block:NextPage}<a href="{NextPage}">{lang:Next page} &rarr;</a>{/block:NextPage}
1086
+ </div>
1087
+ {/block:Pagination}
1088
+
1089
+ </div>
1090
+
1091
+ <div id="sidebar">
1092
+ <div id="top">
1093
+ <div id="avatar"><a href="/"><img src="{PortraitURL-128}" /></a></div>
1094
+ <div id="description">{Description}</div>
1095
+
1096
+ <div id="pages" class="ask_and_submit">
1097
+ {block:AskEnabled}<a href="/ask" class="page">{AskLabel}</a>{/block:AskEnabled}
1098
+ {block:SubmissionsEnabled}<a href="/submit" class="page">{SubmitLabel}</a>{/block:SubmissionsEnabled}
1099
+ <div class="clear"></div>
1100
+ </div>
1101
+
1102
+ {block:HasPages}
1103
+ <div id="pages">
1104
+ {block:Pages}<a href="{URL}" class="page">{Label}</a>{/block:Pages}
1105
+ <div class="clear"></div>
1106
+ </div>
1107
+ {/block:HasPages}
1108
+
1109
+ <div id="search">
1110
+ <form action="/search" method="get" id="search-form">
1111
+ <input type="hidden" name="t" value="{Name}" />
1112
+ <input type="hidden" name="scope" value="all_of_tumblr" />
1113
+ <input type="text" name="q" class="query" value="{SearchQuery}" />
1114
+ <input type="submit" value="{lang:Search}" class="submit" />
1115
+ <div class="clear"></div>
1116
+ </form>
1117
+ </div>
1118
+ <div id="search-scope">
1119
+ <input type="radio" id="search-scope-me" name="scope" checked onclick="document.getElementById('search-form').action='/search'" /> <label for="search-scope-me" onclick="document.getElementById('search-form').action='/search'">{lang:My blog}</label>
1120
+ <input type="radio" id="search-scope-all" name="scope" onclick="document.getElementById('search-form').action='http://www.tumblr.com/search'" /> <label for="search-scope-all" onclick="document.getElementById('search-form').action='http://www.tumblr.com/search'">{lang:All of Tumblr}</label>
1121
+ </div>
1122
+
1123
+ <a href="http://www.tumblr.com/follow/{Name}"><div class="heading" id="followontumblr">{lang:Follow on Tumblr}</div></a>
1124
+
1125
+ {block:Twitter}
1126
+ <div id="twitterwrapper" style="display:none;">
1127
+ <a href="http://twitter.com/{TwitterUsername}" style="text-decoration:none;"><div class="heading" id="twitter">{lang:Latest Tweets}</div></a>
1128
+ <div id="tweetcontainer"></div>
1129
+ <script type="text/javascript">
1130
+ function recent_tweets(data) {
1131
+ document.getElementById("twitterwrapper").style.display = "block";
1132
+ for(i = 0; i < data.length; i++) {
1133
+ document.getElementById("tweetcontainer").innerHTML = document.getElementById("tweetcontainer").innerHTML + '<a href="http://twitter.com/{TwitterUsername}/status/' + (data[i].id_str ? data[i].id_str : data[i].id) + '"><div class="content">' + data[i].text + '</div></a>';
1134
+ }
1135
+ }
1136
+ </script>
1137
+ </div>
1138
+ {/block:Twitter}
1139
+
1140
+ {block:IfShowPeopleIFollow}
1141
+ {block:Following}
1142
+ <div class="heading" id="following">{lang:Following}</div>
1143
+ <div class="content" id="following-avatars">
1144
+ {block:Followed}<a href="{FollowedURL}"><img src="{FollowedPortraitURL-40}" /></a>{/block:Followed}
1145
+ </div>
1146
+ {/block:Following}
1147
+ {/block:IfShowPeopleIFollow}
1148
+
1149
+ <div id="buttons">
1150
+ <div class="row">
1151
+ <div class="button" id="button-rss"><a href="{RSS}">{lang:RSS feed}</a></div>
1152
+ <div class="button" id="button-random"><a href="/random">{lang:Random}</a></div>
1153
+ </div>
1154
+ <div class="clear"></div>
1155
+ <div class="row">
1156
+ <div class="button" id="button-archive"><a href="/archive">{lang:Archive}</a></div>
1157
+ <div class="button" id="button-mobile"><a href="/mobile">{lang:Mobile}</a></div>
1158
+ </div>
1159
+ <div class="clear"></div>
1160
+ </div>
1161
+
1162
+ </div>
1163
+
1164
+ <div id="bottom"></div>
1165
+ <div id="copyright">&copy; {CopyrightYears} <a href="http://www.tumblr.com">{lang:Powered by Tumblr}</a></div>
1166
+ </div>
1167
+
1168
+ <div class="clear"></div>
1169
+ </div>
1170
+
1171
+ {block:Twitter}
1172
+ <script type="text/javascript" src="/tweets.js"></script>
1173
+ {/block:Twitter}
1174
+
1175
+ {block:IfDisqusShortname}
1176
+ <script type="text/javascript">
1177
+ //<![CDATA[
1178
+ (function() {
1179
+ var links = document.getElementsByTagName('a');
1180
+ var query = '?';
1181
+ for(var i = 0; i < links.length; i++) {
1182
+ if(links[i].href.indexOf('#disqus_thread') >= 0) {
1183
+ query += 'url' + i + '=' + encodeURIComponent(links[i].href) + '&';
1184
+ }
1185
+ }
1186
+ document.write('<script charset="utf-8" type="text/javascript" src="http://disqus.com/forums/{text:Disqus Shortname}/get_num_replies.js' + query + '"></' + 'script>');
1187
+ })();
1188
+ //]]>
1189
+ </script>
1190
+ {/block:IfDisqusShortname}
1191
+ </body>
1192
+ </html>