jabe 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/Gemfile +35 -0
- data/Gemfile.lock +217 -0
- data/LICENSE.txt +20 -0
- data/README.textile +12 -0
- data/Rakefile +55 -0
- data/VERSION +1 -0
- data/app/controllers/admin/base_controller.rb +3 -0
- data/app/controllers/admin/entries_controller.rb +42 -0
- data/app/controllers/admin/settings_controller.rb +11 -0
- data/app/controllers/comments_controller.rb +25 -0
- data/app/controllers/entries_controller.rb +26 -0
- data/app/helpers/application_helper.rb +9 -0
- data/app/models/admin.rb +9 -0
- data/app/models/comment.rb +17 -0
- data/app/models/entry.rb +17 -0
- data/app/models/settings.rb +2 -0
- data/app/stylesheets/_will_paginate.scss +102 -0
- data/app/stylesheets/application.scss +247 -0
- data/app/stylesheets/grid.scss +336 -0
- data/app/stylesheets/handheld.scss +7 -0
- data/app/stylesheets/style.scss +273 -0
- data/app/views/admin/entries/_form.html.haml +6 -0
- data/app/views/admin/entries/edit.html.haml +1 -0
- data/app/views/admin/entries/index.html.haml +43 -0
- data/app/views/admin/entries/new.html.haml +1 -0
- data/app/views/admin/settings/edit.html.haml +9 -0
- data/app/views/entries/_comment.html.haml +0 -0
- data/app/views/entries/_comment_form.html.haml +3 -0
- data/app/views/entries/index.html.haml +13 -0
- data/app/views/entries/show.html.haml +36 -0
- data/app/views/layouts/_footer.html.haml +2 -0
- data/app/views/layouts/_header.html.haml +4 -0
- data/app/views/layouts/_sidebar.html.haml +0 -0
- data/app/views/layouts/application.html.haml +59 -0
- data/config/initializers/sass.rb +5 -0
- data/config/initializers/settings.rb +5 -0
- data/config/initializers/time_formats.rb +4 -0
- data/config/routes.rb +26 -0
- data/features/admin.feature +30 -0
- data/features/entries.feature +24 -0
- data/features/step_definitions/admin_steps.rb +14 -0
- data/features/step_definitions/entry_steps.rb +35 -0
- data/features/step_definitions/support_steps.rb +3 -0
- data/features/step_definitions/web_steps.rb +219 -0
- data/features/support/blueprints.rb +31 -0
- data/features/support/env.rb +59 -0
- data/features/support/paths.rb +37 -0
- data/lib/generators/jabe/migrations/migrations_generator.rb +42 -0
- data/lib/generators/jabe/templates/migrations/create_comments.rb +20 -0
- data/lib/generators/jabe/templates/migrations/create_entries.rb +16 -0
- data/lib/generators/jabe/templates/migrations/create_settings.rb +21 -0
- data/lib/generators/jabe/templates/migrations/create_slugs.rb +18 -0
- data/lib/generators/jabe/templates/migrations/devise_create_admins.rb +26 -0
- data/lib/jabe.rb +9 -0
- data/public/.htaccess +220 -0
- data/public/apple-touch-icon.png +0 -0
- data/public/blackbird/blackbird.css +80 -0
- data/public/blackbird/blackbird.js +365 -0
- data/public/blackbird/blackbird.png +0 -0
- data/public/crossdomain.xml +25 -0
- data/public/images/delete_page.png +0 -0
- data/public/images/full_page.png +0 -0
- data/public/javascripts/application.js +34 -0
- data/public/javascripts/jquery-ui.js +11511 -0
- data/public/javascripts/jquery-ui.min.js +404 -0
- data/public/javascripts/jquery.js +7179 -0
- data/public/javascripts/jquery.min.js +167 -0
- data/public/javascripts/libs/dd_belatedpng.js +13 -0
- data/public/javascripts/libs/modernizr-1.6.min.js +30 -0
- data/public/javascripts/libs/profiling/charts.swf +0 -0
- data/public/javascripts/libs/profiling/config.js +59 -0
- data/public/javascripts/libs/profiling/yahoo-profiling.css +7 -0
- data/public/javascripts/libs/profiling/yahoo-profiling.min.js +39 -0
- data/public/javascripts/plugins.js +40 -0
- data/public/javascripts/rails.js +154 -0
- data/public/nginx.conf +108 -0
- data/public/robots.txt +5 -0
- data/spec/support/blueprints.rb +31 -0
- data/test/dummy/app/controllers/application_controller.rb +3 -0
- data/test/dummy/app/helpers/application_helper.rb +2 -0
- data/test/dummy/config/application.rb +45 -0
- data/test/dummy/config/boot.rb +10 -0
- data/test/dummy/config/environment.rb +5 -0
- data/test/dummy/config/environments/development.rb +26 -0
- data/test/dummy/config/environments/production.rb +49 -0
- data/test/dummy/config/environments/test.rb +35 -0
- data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
- data/test/dummy/config/initializers/devise.rb +142 -0
- data/test/dummy/config/initializers/inflections.rb +10 -0
- data/test/dummy/config/initializers/mime_types.rb +5 -0
- data/test/dummy/config/initializers/secret_token.rb +7 -0
- data/test/dummy/config/initializers/session_store.rb +8 -0
- data/test/dummy/config/routes.rb +58 -0
- data/test/dummy/db/migrate/20101229224027_create_settings.rb +21 -0
- data/test/dummy/db/migrate/20101229224028_create_slugs.rb +18 -0
- data/test/dummy/db/migrate/20101229224029_devise_create_admins.rb +26 -0
- data/test/dummy/db/migrate/20101229224030_create_entries.rb +16 -0
- data/test/dummy/db/migrate/20101229224031_create_comments.rb +20 -0
- data/test/dummy/db/schema.rb +82 -0
- data/test/dummy/vendor/plugins/acts_as_textiled/init.rb +8 -0
- data/test/dummy/vendor/plugins/acts_as_textiled/lib/acts_as_textiled.rb +108 -0
- data/test/dummy/vendor/plugins/acts_as_textiled/test/fixtures/author.rb +4 -0
- data/test/dummy/vendor/plugins/acts_as_textiled/test/fixtures/story.rb +4 -0
- data/test/dummy/vendor/plugins/acts_as_textiled/test/helper.rb +87 -0
- data/test/dummy/vendor/plugins/acts_as_textiled/test/textiled_test.rb +145 -0
- metadata +641 -0
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
module NavigationHelpers
|
|
2
|
+
# Maps a name to a path. Used by the
|
|
3
|
+
#
|
|
4
|
+
# When /^I go to (.+)$/ do |page_name|
|
|
5
|
+
#
|
|
6
|
+
# step definition in web_steps.rb
|
|
7
|
+
#
|
|
8
|
+
def path_to(page_name)
|
|
9
|
+
case page_name
|
|
10
|
+
|
|
11
|
+
when /the home\s?page/
|
|
12
|
+
'/'
|
|
13
|
+
when 'the admin home page'
|
|
14
|
+
admin_root_path
|
|
15
|
+
when 'the entry page'
|
|
16
|
+
entry_path(Entry.last)
|
|
17
|
+
|
|
18
|
+
# Add more mappings here.
|
|
19
|
+
# Here is an example that pulls values out of the Regexp:
|
|
20
|
+
#
|
|
21
|
+
# when /^(.*)'s profile page$/i
|
|
22
|
+
# user_profile_path(User.find_by_login($1))
|
|
23
|
+
|
|
24
|
+
else
|
|
25
|
+
begin
|
|
26
|
+
page_name =~ /the (.*) page/
|
|
27
|
+
path_components = $1.split(/\s+/)
|
|
28
|
+
self.send(path_components.push('path').join('_').to_sym)
|
|
29
|
+
rescue Object => e
|
|
30
|
+
raise "Can't find mapping from \"#{page_name}\" to a path.\n" +
|
|
31
|
+
"Now, go and add a mapping in #{__FILE__}"
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
World(NavigationHelpers)
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
require 'rails/generators'
|
|
2
|
+
require 'rails/generators/migration'
|
|
3
|
+
|
|
4
|
+
module Jabe
|
|
5
|
+
module Generators
|
|
6
|
+
class MigrationsGenerator < Rails::Generators::Base
|
|
7
|
+
include Rails::Generators::Migration
|
|
8
|
+
|
|
9
|
+
self.source_root(File.expand_path(
|
|
10
|
+
File.join(__FILE__, '..', '..', 'templates', 'migrations'))
|
|
11
|
+
)
|
|
12
|
+
|
|
13
|
+
desc "run this generator to create the necessary migrations"
|
|
14
|
+
|
|
15
|
+
def create_migrations
|
|
16
|
+
existing_migrations = Dir["db/migrate/*.rb"]
|
|
17
|
+
migrations = %w(
|
|
18
|
+
create_settings.rb
|
|
19
|
+
create_slugs.rb
|
|
20
|
+
devise_create_admins.rb
|
|
21
|
+
create_entries.rb
|
|
22
|
+
create_comments.rb
|
|
23
|
+
).reject { |file|
|
|
24
|
+
existing_migrations.any? { |migration|
|
|
25
|
+
match = migration.match(/#{file}$/)
|
|
26
|
+
puts "skipping #{file}, exists." if match
|
|
27
|
+
match
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
migrations.each do |migration|
|
|
32
|
+
migration_template migration, "db/migrate/#{migration}"
|
|
33
|
+
sleep 1 # timestamps...
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
def self.next_migration_number(dirname)
|
|
38
|
+
Time.now.utc.strftime("%Y%m%d%H%M%S")
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
end
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
class CreateComments < ActiveRecord::Migration
|
|
2
|
+
def self.up
|
|
3
|
+
create_table :comments do |t|
|
|
4
|
+
t.integer :entry_id
|
|
5
|
+
t.string :name
|
|
6
|
+
t.string :email
|
|
7
|
+
t.string :url
|
|
8
|
+
t.text :body
|
|
9
|
+
|
|
10
|
+
t.timestamps
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
add_index :comments, :entry_id
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def self.down
|
|
17
|
+
remove_index :comments, :entry_id
|
|
18
|
+
drop_table :comments
|
|
19
|
+
end
|
|
20
|
+
end
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
class CreateEntries < ActiveRecord::Migration
|
|
2
|
+
def self.up
|
|
3
|
+
create_table :entries do |t|
|
|
4
|
+
t.string :cached_slug
|
|
5
|
+
t.string :title
|
|
6
|
+
t.text :body
|
|
7
|
+
t.boolean :draft
|
|
8
|
+
t.datetime :published_at
|
|
9
|
+
t.timestamps
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def self.down
|
|
14
|
+
drop_table :entries
|
|
15
|
+
end
|
|
16
|
+
end
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
class CreateSettings < ActiveRecord::Migration
|
|
2
|
+
def self.up
|
|
3
|
+
create_table :settings do |t|
|
|
4
|
+
t.string :site_url
|
|
5
|
+
t.string :host_name
|
|
6
|
+
t.string :mail_from
|
|
7
|
+
t.string :site_name
|
|
8
|
+
t.string :tagline
|
|
9
|
+
t.string :time_zone
|
|
10
|
+
t.string :google_tracker_id
|
|
11
|
+
t.boolean :blackbird_enabled
|
|
12
|
+
t.integer :entries_per_page
|
|
13
|
+
|
|
14
|
+
t.timestamps
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def self.down
|
|
19
|
+
drop_table :settings
|
|
20
|
+
end
|
|
21
|
+
end
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
class CreateSlugs < ActiveRecord::Migration
|
|
2
|
+
def self.up
|
|
3
|
+
create_table :slugs do |t|
|
|
4
|
+
t.string :name
|
|
5
|
+
t.integer :sluggable_id
|
|
6
|
+
t.integer :sequence, :null => false, :default => 1
|
|
7
|
+
t.string :sluggable_type, :limit => 40
|
|
8
|
+
t.string :scope
|
|
9
|
+
t.datetime :created_at
|
|
10
|
+
end
|
|
11
|
+
add_index :slugs, :sluggable_id
|
|
12
|
+
add_index :slugs, [:name, :sluggable_type, :sequence, :scope], :name => "index_slugs_on_n_s_s_and_s", :unique => true
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def self.down
|
|
16
|
+
drop_table :slugs
|
|
17
|
+
end
|
|
18
|
+
end
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
class DeviseCreateAdmins < ActiveRecord::Migration
|
|
2
|
+
def self.up
|
|
3
|
+
create_table(:admins) do |t|
|
|
4
|
+
t.database_authenticatable :null => false
|
|
5
|
+
t.recoverable
|
|
6
|
+
t.rememberable
|
|
7
|
+
t.trackable
|
|
8
|
+
|
|
9
|
+
# t.confirmable
|
|
10
|
+
# t.lockable :lock_strategy => :failed_attempts, :unlock_strategy => :both
|
|
11
|
+
# t.token_authenticatable
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
t.timestamps
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
add_index :admins, :email, :unique => true
|
|
18
|
+
add_index :admins, :reset_password_token, :unique => true
|
|
19
|
+
# add_index :admins, :confirmation_token, :unique => true
|
|
20
|
+
# add_index :admins, :unlock_token, :unique => true
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def self.down
|
|
24
|
+
drop_table :admins
|
|
25
|
+
end
|
|
26
|
+
end
|
data/lib/jabe.rb
ADDED
data/public/.htaccess
ADDED
|
@@ -0,0 +1,220 @@
|
|
|
1
|
+
# Apache configuration file
|
|
2
|
+
# httpd.apache.org/docs/2.2/mod/quickreference.html
|
|
3
|
+
|
|
4
|
+
# Techniques in here adapted from all over, including:
|
|
5
|
+
# Kroc Camen: camendesign.com/.htaccess
|
|
6
|
+
# perishablepress.com/press/2006/01/10/stupid-htaccess-tricks/
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
# Force the latest IE version, in various cases when it may fall back to IE7 mode
|
|
10
|
+
# github.com/rails/rails/commit/123eb25#commitcomment-118920
|
|
11
|
+
# Use ChromeFrame if it's installed for a better experience for the poor IE folk
|
|
12
|
+
<IfModule mod_setenvif.c>
|
|
13
|
+
<IfModule mod_headers.c>
|
|
14
|
+
BrowserMatch MSIE ie
|
|
15
|
+
Header set X-UA-Compatible "IE=Edge,chrome=1" env=ie
|
|
16
|
+
</IfModule>
|
|
17
|
+
</IfModule>
|
|
18
|
+
|
|
19
|
+
<IfModule mod_headers.c>
|
|
20
|
+
# Because X-UA-Compatible isn't sent to non-IE (to save header bytes),
|
|
21
|
+
# We need to inform proxies that content changes based on UA
|
|
22
|
+
Header append Vary User-Agent
|
|
23
|
+
# Cache control is set only if mod_headers is enabled, so that's unncessary to declare
|
|
24
|
+
</IfModule>
|
|
25
|
+
|
|
26
|
+
# hacks.mozilla.org/2009/07/cross-site-xmlhttprequest-with-cors/
|
|
27
|
+
# Disabled. Uncomment to serve cross-domain ajax requests
|
|
28
|
+
#<IfModule mod_headers.c>
|
|
29
|
+
# Header set Access-Control-Allow-Origin "*"
|
|
30
|
+
#</IfModule>
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
# allow access from all domains for webfonts
|
|
36
|
+
# alternatively you could only whitelist
|
|
37
|
+
# your subdomains like "sub.domain.com"
|
|
38
|
+
|
|
39
|
+
<FilesMatch "\.(ttf|otf|eot|woff|font.css)$">
|
|
40
|
+
<IfModule mod_headers.c>
|
|
41
|
+
Header set Access-Control-Allow-Origin "*"
|
|
42
|
+
</IfModule>
|
|
43
|
+
</FilesMatch>
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
# video
|
|
47
|
+
AddType video/ogg ogg ogv
|
|
48
|
+
AddType video/mp4 mp4
|
|
49
|
+
AddType video/webm webm
|
|
50
|
+
|
|
51
|
+
# Proper svg serving. Required for svg webfonts on iPad
|
|
52
|
+
# twitter.com/FontSquirrel/status/14855840545
|
|
53
|
+
AddType image/svg+xml svg svgz
|
|
54
|
+
AddEncoding gzip svgz
|
|
55
|
+
|
|
56
|
+
# webfonts
|
|
57
|
+
AddType application/vnd.ms-fontobject eot
|
|
58
|
+
AddType font/truetype ttf
|
|
59
|
+
AddType font/opentype otf
|
|
60
|
+
AddType font/woff woff
|
|
61
|
+
|
|
62
|
+
# assorted types
|
|
63
|
+
AddType image/vnd.microsoft.icon ico
|
|
64
|
+
AddType image/webp webp
|
|
65
|
+
AddType text/cache-manifest manifest
|
|
66
|
+
AddType text/x-component htc
|
|
67
|
+
AddType application/x-chrome-extension crx
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
# allow concatenation from within specific js and css files
|
|
73
|
+
|
|
74
|
+
# e.g. Inside of script.combined.js you could have
|
|
75
|
+
# <!--#include file="jquery-1.4.2.js" -->
|
|
76
|
+
# <!--#include file="jquery.idletimer.js" -->
|
|
77
|
+
# and they would be included into this single file
|
|
78
|
+
|
|
79
|
+
# this is not in use in the boilerplate as it stands. you may
|
|
80
|
+
# choose to name your files in this way for this advantage
|
|
81
|
+
# or concatenate and minify them manually.
|
|
82
|
+
# Disabled by default.
|
|
83
|
+
|
|
84
|
+
# <FilesMatch "\.combined\.(js|css)$">
|
|
85
|
+
# Options +Includes
|
|
86
|
+
# SetOutputFilter INCLUDES
|
|
87
|
+
# </FilesMatch>
|
|
88
|
+
|
|
89
|
+
|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
|
|
93
|
+
# gzip compression.
|
|
94
|
+
<IfModule mod_deflate.c>
|
|
95
|
+
|
|
96
|
+
# html, txt, css, js, json, xml, htc:
|
|
97
|
+
AddOutputFilterByType DEFLATE text/html text/plain text/css application/json
|
|
98
|
+
AddOutputFilterByType DEFLATE text/javascript application/javascript application/x-javascript
|
|
99
|
+
AddOutputFilterByType DEFLATE text/xml application/xml text/x-component
|
|
100
|
+
|
|
101
|
+
# webfonts and svg:
|
|
102
|
+
<FilesMatch "\.(ttf|otf|eot|svg)$" >
|
|
103
|
+
SetOutputFilter DEFLATE
|
|
104
|
+
</FilesMatch>
|
|
105
|
+
</IfModule>
|
|
106
|
+
|
|
107
|
+
|
|
108
|
+
|
|
109
|
+
# these are pretty far-future expires headers
|
|
110
|
+
# they assume you control versioning with cachebusting query params like
|
|
111
|
+
# <script src="application.js?20100608">
|
|
112
|
+
# additionally, consider that outdated proxies may miscache
|
|
113
|
+
# www.stevesouders.com/blog/2008/08/23/revving-filenames-dont-use-querystring/
|
|
114
|
+
|
|
115
|
+
# if you don't use filenames to version, lower the css and js to something like
|
|
116
|
+
# "access plus 1 week" or so
|
|
117
|
+
|
|
118
|
+
<IfModule mod_expires.c>
|
|
119
|
+
Header set Cache-Control "public"
|
|
120
|
+
ExpiresActive on
|
|
121
|
+
|
|
122
|
+
# Perhaps better to whitelist expires rules? Perhaps.
|
|
123
|
+
ExpiresDefault "access plus 1 month"
|
|
124
|
+
|
|
125
|
+
# cache.manifest needs re-requests in FF 3.6 (thx Remy ~Introducing HTML5)
|
|
126
|
+
ExpiresByType text/cache-manifest "access plus 0 seconds"
|
|
127
|
+
|
|
128
|
+
# your document html
|
|
129
|
+
ExpiresByType text/html "access plus 0 seconds"
|
|
130
|
+
|
|
131
|
+
# data
|
|
132
|
+
ExpiresByType text/xml "access plus 0 seconds"
|
|
133
|
+
ExpiresByType application/xml "access plus 0 seconds"
|
|
134
|
+
ExpiresByType application/json "access plus 0 seconds"
|
|
135
|
+
|
|
136
|
+
|
|
137
|
+
# rss feed
|
|
138
|
+
ExpiresByType application/rss+xml "access plus 1 hour"
|
|
139
|
+
|
|
140
|
+
# favicon (cannot be renamed)
|
|
141
|
+
ExpiresByType image/vnd.microsoft.icon "access plus 1 week"
|
|
142
|
+
|
|
143
|
+
# media: images, video, audio
|
|
144
|
+
ExpiresByType image/gif "access plus 1 month"
|
|
145
|
+
ExpiresByType image/png "access plus 1 month"
|
|
146
|
+
ExpiresByType image/jpg "access plus 1 month"
|
|
147
|
+
ExpiresByType image/jpeg "access plus 1 month"
|
|
148
|
+
ExpiresByType video/ogg "access plus 1 month"
|
|
149
|
+
ExpiresByType audio/ogg "access plus 1 month"
|
|
150
|
+
ExpiresByType video/mp4 "access plus 1 month"
|
|
151
|
+
ExpiresByType video/webm "access plus 1 month"
|
|
152
|
+
|
|
153
|
+
# webfonts
|
|
154
|
+
ExpiresByType font/truetype "access plus 1 month"
|
|
155
|
+
ExpiresByType font/opentype "access plus 1 month"
|
|
156
|
+
ExpiresByType font/woff "access plus 1 month"
|
|
157
|
+
ExpiresByType image/svg+xml "access plus 1 month"
|
|
158
|
+
ExpiresByType application/vnd.ms-fontobject "access plus 1 month"
|
|
159
|
+
|
|
160
|
+
# css and javascript
|
|
161
|
+
ExpiresByType text/css "access plus 1 month"
|
|
162
|
+
ExpiresByType application/javascript "access plus 1 month"
|
|
163
|
+
ExpiresByType text/javascript "access plus 1 month"
|
|
164
|
+
</IfModule>
|
|
165
|
+
|
|
166
|
+
|
|
167
|
+
|
|
168
|
+
|
|
169
|
+
# Since we're sending far-future expires, we don't need ETags for
|
|
170
|
+
# static content.
|
|
171
|
+
# developer.yahoo.com/performance/rules.html#etags
|
|
172
|
+
FileETag None
|
|
173
|
+
|
|
174
|
+
|
|
175
|
+
|
|
176
|
+
|
|
177
|
+
# Allow cookies to be set from iframes (for IE only)
|
|
178
|
+
# If needed, uncomment and specify a path or regex in the Location directive
|
|
179
|
+
|
|
180
|
+
# <IfModule mod_headers.c>
|
|
181
|
+
# <Location />
|
|
182
|
+
# Header set P3P "policyref=\"/w3c/p3p.xml\", CP=\"IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT\""
|
|
183
|
+
# </Location>
|
|
184
|
+
# </IfModule>
|
|
185
|
+
|
|
186
|
+
|
|
187
|
+
# you probably want www.example.com to forward to example.com -- shorter URLs are sexier.
|
|
188
|
+
# no-www.org/faq.php?q=class_b
|
|
189
|
+
<IfModule mod_rewrite.c>
|
|
190
|
+
RewriteEngine On
|
|
191
|
+
RewriteCond %{HTTPS} !=on
|
|
192
|
+
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
|
|
193
|
+
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]
|
|
194
|
+
</IfModule>
|
|
195
|
+
|
|
196
|
+
# without -MultiViews, Apache will give a 404 for a rewrite if a folder of the same name does not exist
|
|
197
|
+
# e.g. /blog/hello : webmasterworld.com/apache/3808792.htm
|
|
198
|
+
Options -MultiViews
|
|
199
|
+
# -Indexes will have Apache block users from browsing folders without a default document
|
|
200
|
+
# Options -Indexes
|
|
201
|
+
|
|
202
|
+
|
|
203
|
+
|
|
204
|
+
# custom 404 page
|
|
205
|
+
ErrorDocument 404 /404.html
|
|
206
|
+
|
|
207
|
+
|
|
208
|
+
|
|
209
|
+
# use utf-8 encoding for anything served text/plain or text/html
|
|
210
|
+
AddDefaultCharset utf-8
|
|
211
|
+
# force utf-8 for a number of file formats
|
|
212
|
+
AddCharset utf-8 .html .css .js .xml .json .rss
|
|
213
|
+
|
|
214
|
+
|
|
215
|
+
|
|
216
|
+
# We don't need to tell everyone we're apache.
|
|
217
|
+
ServerSignature Off
|
|
218
|
+
|
|
219
|
+
|
|
220
|
+
|
|
Binary file
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
/*
|
|
2
|
+
Blackbird - Open Source JavaScript Logging Utility
|
|
3
|
+
Author: G Scott Olson
|
|
4
|
+
Web: http://blackbirdjs.googlecode.com/
|
|
5
|
+
http://www.gscottolson.com/blackbirdjs/
|
|
6
|
+
Version: 1.0
|
|
7
|
+
|
|
8
|
+
The MIT License - Copyright (c) 2008 Blackbird Project
|
|
9
|
+
*/
|
|
10
|
+
#blackbird { margin:0; padding:0; position:fixed; _position:absolute; font:11px/1.3 Consolas, 'Lucida Console', Monaco, monospace; _border:2px solid #BBB; }
|
|
11
|
+
#blackbird.bb-top-left { top:0; left:0; _top:expression(eval(document.documentElement.scrollTop+8)); _left:expression(eval(document.documentElement.scrollLeft+8)); }
|
|
12
|
+
#blackbird.bb-top-right { top:0; right:0; }
|
|
13
|
+
* html .bb-top-right { right:auto; top:expression(eval(document.documentElement.scrollTop+8)); left:expression(eval(document.documentElement.scrollLeft+document.documentElement.clientWidth-document.getElementById('blackbird').offsetWidth-8)); }
|
|
14
|
+
#blackbird.bb-bottom-left { bottom:0; left:0; }
|
|
15
|
+
* html .bb-bottom-left { bottom:auto; top:expression(eval(document.documentElement.scrollTop+document.documentElement.clientHeight-document.getElementById('blackbird').offsetHeight-8)); left:expression(eval(document.documentElement.scrollLeft+8)); }
|
|
16
|
+
#blackbird.bb-bottom-right { bottom:0; right:0; }
|
|
17
|
+
* html .bb-bottom-right { bottom:auto; right:auto; top:expression(eval(document.documentElement.scrollTop+document.documentElement.clientHeight-document.getElementById('blackbird').offsetHeight-8)); left:expression(eval(document.documentElement.scrollLeft+document.documentElement.clientWidth-document.getElementById('blackbird').offsetWidth-8)); }
|
|
18
|
+
|
|
19
|
+
#blackbird.bb-small { width:300px; _width:272px; }
|
|
20
|
+
#blackbird.bb-small .bb-header { _width:272px; }
|
|
21
|
+
#blackbird.bb-small .bb-header div.bb-left, #blackbird.bb-small .bb-footer div.bb-left { width:150px; }
|
|
22
|
+
#blackbird.bb-small .bb-main { _width:272px; }
|
|
23
|
+
#blackbird.bb-small .bb-main div { height:200px; }
|
|
24
|
+
#blackbird.bb-small .bb-main div.bb-mainBody { width:272px; }
|
|
25
|
+
#blackbird.bb-small .bb-footer { _width:272px; }
|
|
26
|
+
|
|
27
|
+
#blackbird.bb-large { width:500px; _width:472px; }
|
|
28
|
+
#blackbird.bb-large .bb-header { _width:472px; }
|
|
29
|
+
#blackbird.bb-large .bb-header div.bb-left, #blackbird.bb-large .bb-footer div.bb-left { width:350px; }
|
|
30
|
+
#blackbird.bb-large .bb-main { _width:472px; }
|
|
31
|
+
#blackbird.bb-large .bb-main div { height:500px; }
|
|
32
|
+
#blackbird.bb-large .bb-main div.bb-mainBody { width:472px; }
|
|
33
|
+
#blackbird.bb-large .bb-footer { _width:472px; }
|
|
34
|
+
|
|
35
|
+
#blackbird .bb-header span { cursor: pointer; position:relative; width:16px; height:16px; margin:0 4px; float:left; background-image:url(blackbird.png); background-repeat:no-repeat; }
|
|
36
|
+
#blackbird .bb-header span.bb-error { background-position:100% -84px; }
|
|
37
|
+
#blackbird .bb-header span.bb-warn { background-position:100% -100px; }
|
|
38
|
+
#blackbird .bb-header span.bb-info { background-position:100% -116px; }
|
|
39
|
+
#blackbird .bb-header span.bb-debug { background-position:100% -132px; }
|
|
40
|
+
#blackbird .bb-header span.bb-profile { background-position:100% -148px; }
|
|
41
|
+
#blackbird .bb-header span.bb-close { background-position:100% -68px; }
|
|
42
|
+
#blackbird .bb-header span.bb-clear { background-position:100% -52px; }
|
|
43
|
+
#blackbird .bb-header span.bb-contract { background-position:100% -20px; }
|
|
44
|
+
#blackbird .bb-header span.bb-expand { background-position:100% -36px; }
|
|
45
|
+
#blackbird .bb-header span.bb-disabled { opacity: 0.4; *filter:alpha(opacity=40); }
|
|
46
|
+
|
|
47
|
+
#blackbird .bb-header > div, #blackbird .bb-main > div, #blackbird .bb-footer > div { background-image:url(blackbird.png); background-repeat:no-repeat; }
|
|
48
|
+
|
|
49
|
+
#blackbird .bb-header div { float:left; _background-color:#000; }
|
|
50
|
+
#blackbird .bb-header div.bb-left { background-position:0 0; height:40px; _height:16px; }
|
|
51
|
+
#blackbird #bbFilters { margin-left: -4px; padding:16px 0 0 19px; float:left; _padding:6px 8px; }
|
|
52
|
+
#blackbird .bb-header div.bb-right { background-position:-350px 0; height:40px; width:150px; _width:122px; _height:16px; }
|
|
53
|
+
#blackbird #bbControls { padding:16px 24px 0 0; float:right; _padding:6px 8px; }
|
|
54
|
+
#blackbird #bbControls span { margin:0 2px; }
|
|
55
|
+
#blackbird #bbControls span.bb-clear { margin-right:8px; }
|
|
56
|
+
|
|
57
|
+
#blackbird .bb-main div { float:left; }
|
|
58
|
+
#blackbird .bb-main div.bb-left { background-position:0 -30px; width:11px; _width:0; }
|
|
59
|
+
#blackbird .bb-main div.bb-mainBody { background-position:-11px -40px; _background-color:#000; _filter:alpha(opacity='90'); }
|
|
60
|
+
#blackbird .bb-main .bb-mainBody ol { line-height: 1.45; height:100%; overflow:auto; width:100%; list-style-type:none; margin:0; padding:0; }
|
|
61
|
+
#blackbird .bb-main .bb-mainBody ol li { padding:1px 4px 1px 24px; border-bottom: 1px solid #333; color:#CCC; margin: 2px 2px; _text-indent: -2px; }
|
|
62
|
+
#blackbird .bb-main .bb-mainBody ol li span { display:block; _display:inline-block; _font-size:6px; _line-height:0; height: 8px; width: 8px; background: url(blackbird.png) no-repeat 0 0; margin: 3px 0 1px -16px; }
|
|
63
|
+
|
|
64
|
+
#blackbird .bb-main .bb-mainBody ol li.bb-error span { background-position:100% -164px; }
|
|
65
|
+
#blackbird .bb-main .bb-mainBody ol li.bb-warn span { background-position:100% -172px; }
|
|
66
|
+
#blackbird .bb-main .bb-mainBody ol li.bb-info span { background-position:100% -180px; }
|
|
67
|
+
#blackbird .bb-main .bb-mainBody ol li.bb-debug span { background-position:100% -188px; }
|
|
68
|
+
#blackbird .bb-main .bb-mainBody ol li.bb-profile span { background-position:100% -196px; }
|
|
69
|
+
|
|
70
|
+
#blackbird .bb-main .bb-mainBody ol li.bb-profile { color:#DDD; font-style:italic; }
|
|
71
|
+
|
|
72
|
+
#blackbird .bb-error-hidden li.bb-error, #blackbird .bb-warn-hidden li.bb-warn, #blackbird .bb-info-hidden li.bb-info, #blackbird .bb-debug-hidden li.bb-debug, #blackbird .bb-profile-hidden li.bb-profile { display:none; }
|
|
73
|
+
|
|
74
|
+
#blackbird .bb-main div.bb-right { background-position:-483px -30px; width:17px; _width:0; }
|
|
75
|
+
|
|
76
|
+
#blackbird .bb-footer div { height:50px; float:left; _background-color:#000; _height:auto; _filter:alpha(opacity='90'); }
|
|
77
|
+
#blackbird .bb-footer div.bb-left { cursor: pointer; background-position:bottom left; _width:100% !important; font-family:Arial,sans-serif; color:#BBB; padding-top: 10px; height: 40px; _height:auto; _padding:4px 0 6px; }
|
|
78
|
+
#blackbird .bb-footer div.bb-left span { cursor: pointer; display:block; float:left; _float:none; _display:inline-block; _font-size:6px; _line-height:0; background:transparent url(blackbird.png) no-repeat -506px -10px; height:10px; width:10px; margin:2px 4px 0 20px; position:relative; _margin:4px 4px 0 8px; }
|
|
79
|
+
#blackbird .bb-footer div.bb-left span.checked { background-position: -506px 0; }
|
|
80
|
+
#blackbird .bb-footer div.bb-right { background-position:-350px -550px; width:150px; _width:0; }
|